最近在做一些笔试题时经常遇到sql语句的题目,考查最多的就是groupby和having了,现根据一些例子来总结一下。
在介绍GROUP BY 和 HAVING 子句前,先讲讲sql语言中一种特殊的函数:聚合函数, 例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。
SELECT SUM(population) FROM bbc
这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有 国家的总人口数。
having是分组(group by)后的筛选条件,分组后的数据组内再筛选,where则是在分组前筛选
通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。 当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值。也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值.
HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录。也就是说作用在GROU