查询时,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.类别)

posted @ 2012-04-22 16:36  Alex_Monkey  阅读(654)  评论(0编辑  收藏  举报