SQL的執行順序與聚集函數

本文參考:https://blog.csdn.net/anguowei/article/details/78391161
一、SQL SELECT語句的執行順序:
1.from子句組裝來自不同數據源的數據;
2.where子句基於指定的條件對記錄行進行篩選;
3.group by子句將數據劃分爲多個分組;
4.使用聚集函數進行計算;
5.使用having子句篩選分組;
6.計算所有的表達式;
7.使用order by對結果集進行排序;
8.select 集合輸出。

注:如果使用了連接join和on,則會在where執行之前先執行on,然後執行join,接着纔去執行where

舉個例子:

select 考生姓名, max(總成績) as max總成績
from tb_name
where 考生姓名 is not null
group by 考生姓名
having max(總成績) > 600
order by max總成績

在上面的示例中 SQL 語句的執行順序如下:
1.首先執行 FROM 子句, 從 tb_name 表組裝數據源的數據
2.執行 WHERE 子句, 篩選 tb_name 表中所有數據不爲 NULL 的數據
3.執行 GROUP BY 子句, 把 tb_name 表按 “學生姓名” 列進行分組
4.計算 max() 聚集函數, 按 “總成績” 求出總成績中最大的一些數值
5.執行 HAVING 子句, 篩選課程的總成績大於 600 分的.
6.執行 ORDER BY 子句, 把最後的結果按 “Max 成績” 進行排序

二、MySQL中的聚集函數
1、count()返回某列的行數
2、avg()返回某列的平均值
3、max()返回某列的最大值
4、min()返回某列的最小值
5、sum()返回某列的和
6、distinct 去除重複值
注:avg()忽略值爲null的行,count(*)時統計所有行,count(列)時忽略爲null的行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章