- having子句使用的原因:是因为where子句无法与聚合函数(sum,count...)在一起使用
- having子句主要用来筛选分组,与group by在一起使用
- where子句在分组前过滤,having在分组后过滤,两者可以同时在一个句子里使用,并不矛盾
- having子句限制组是组而不是行
having子句的使用:
select column_1,column_2...column_n,aggregate_function(expression)
from table where predicates
group by column_1,column_2...column_n
having condition_1...condition_n;
练习:
students | ||
---|---|---|
ID | course | score |
10001 | 语文 | 88 |
10002 | 语文 | 90 |
10003 | 语文 | 91 |
10001 | 数学 | 99 |
10002 | 数学 | 89 |
1003 | 数学 | 96 |
查找:平均分高于90分学生的平均成绩、学号。
select avg(score),ID from students group by ID having avg(score)>=90;