创建分组(GROUP BY)
表:
SELECT COUNT(*) AS num,brand FROM test3 GROUP BY brand;
除了COUNT()这种分组函数,还有AVG(),MAX(),MIN(),SUM(). 使用的语法如下:
需要注意的是各个关键字的顺序,GROUP BY紧跟在WHERE后面,再后面才是ORDER BY. 另一个需要注意的点:
要想实现上述效果,可以通过使用HAVING语句,在后面加上组函数和判断条件;如下: SELECT department_id,AVG(salary) FROM test4 GROUP BY department_id HAVING AVG(salary)>5000;
![]()
下面着重介绍HAVING函数。
过滤分组(HAVING)
HAVING函数的主要作用是在使用了组函数和被分了组的前提下,对分组进行过滤。HAVING的功能与WHERE很像,只不过WHERE是对行的过滤,而HAVING是对分组的过滤。他们之间的主要区别是,WHERE用于分组前对行的过滤,HAVING用于对分组后的组数据进行过滤。
事实上WHERE子句可以用HAVING子句来实现,例如:

当然这两个子句也可以配合使用,例如:
上面的例子要求从表test4中检索出按department_id分组,其中department_id大于20且AVG(salary)大于等于5500的倒序数据。
语法顺序

需要注意的是各个关键字的顺序,GROUP BY紧跟在WHERE后面,再后面才是ORDER BY.
另一个需要注意的点:
要想实现上述效果,可以通过使用HAVING语句,在后面加上组函数和判断条件;如下:
SELECT department_id,AVG(salary)
FROM test4
GROUP BY department_id
HAVING AVG(salary)>5000;
下面着重介绍HAVING函数。