使用說明:
select 列x[,聚合函數]
from 表名
where 篩選條件
group by 列x(是select那裡的列x)
having 過濾條件
order by 列名(或聚合函數,需要時select那裡出現的) [desc | asc]
執行順序:
1、 where傳回符合條件的結果集
2、 group by傳回分類結果集
3、 select傳回選擇後的結果集
4、having傳回符合條件的結果集
5、 order by按照某種方式對某列進行排序
至于為什麼有了where隻有還要有having?
不僅是因為having的執行時間不同,更重要的是where後面不能跟聚合函數,我們待會再下面的例子裡來細說。
舉個栗子:
select name, sum(grade)
from people
where sex='男'
group by name
having sum(grade)>100
order by sum(grade) desc