日期:2014-05-16  浏览次数:20823 次

group by 子句的作用和详细用法!跪求高手给出详细说明!
最好对比着 having 给出案例例题 和查询的结果!跪求高手!

------解决方案--------------------
GROUP BY就是进行分组,然后应用聚合函数。

练习:查询所有商品类型的平均价格(要求显示类型编号和平均价格)



group by 后面可以出现多列。
对行分组可以使用任何聚合函数。
GROUP BY子句中出现的列,并不要求一定出现在SELECT子句中。
练习:在Products表中统计每种类型商品的数量。(显示产品类型编号和数量)


使用聚合函数的限制:
如果查询中包含一个聚合函数,而所选择的列并不在聚合函数中,则这些列就必须在group by 子句中。
就是说如果在一个查询中使用了聚合函数,则所选择的列一定是聚合函数中的列或者是出现在group by子句中的列,其它的列不允许被查询。
仅仅使用group by会将所有的分组显示出来,如果只想显示满足一定条件的分组,则需要使用having。

GROUP BY可以没有HAVING,但HAVING必须有GROUP BY
练习:查询平均价格大于20的商品的商品类型号和平均价格。


WHERE和HAVING的关系
WHERE是用来筛选记录的,而HAVING是用来筛选分组的。