查询时,where,group by, 聚合语句,having的区别与运用

一般而言:

  优先级为:

    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.类别)

原文地址:https://www.cnblogs.com/forstudy/p/2465076.html