一般而言:
优先级为:
where子句 > group by > 聚合语句(sum, min, max, count, avg) > having子句
having子句 + 聚合语句
eg:图书(书号,类别,出版社,作者,书名,定价)
查找这样的类别的书:该类别的最高定价不低于全部按类别分组的平均定价的2倍。
分析: 1. “该类别”说明用group by分组
2. “最高定价不低于全部按类别分组的平均定价的2倍”是对分组后的进一步筛选,应用having子句
3. “最高定价”为聚合函数max,“不低于全部”为>=all,“按类别分组的平均定价的2倍”为select语句产生的一个临时表
select *
from 图书 A
group by A.类别
having max(A.定价) >= all(select 2*AVG(B.定价) from 图书 B group by B.类别)