聚合函數 聚合函數是對一組數據進行彙總輸出的函數。 輸入:一組數據集合 輸出:單個值 舉例:返回一組數據的最大值、平均數、最小、方差等操作。 常見函數舉例: 1,AVG函數:返回一組數據的平均值 2,SUM函數:返回一組數據的總和 3,MAX、MIN函數:返回一組數據的最大、最小值 4,COUNT函 ...
聚合函數
聚合函數是對一組數據進行彙總輸出的函數。
輸入:一組數據集合
輸出:單個值
舉例:返回一組數據的最大值、平均數、最小、方差等操作。
常見函數舉例:
1,AVG函數:返回一組數據的平均值
2,SUM函數:返回一組數據的總和
3,MAX、MIN函數:返回一組數據的最大、最小值
4,COUNT函數
COUNT(*) 返回表中記錄的總數
COUNT(field)返回field欄位不為空的記錄總數
SELECT COUNT(telephone) FROM employees; # 返回employees表中telephone欄位不為空的記錄數
註:聚合函數不可嵌套使用,AVG(SUM(field))不可用
GROUP BY子句的使用:
使用GROUP BY子句,可以將表中數據分成若幹組。需要和聚合函數group_function配合使用
舉例:
點擊查看代碼
SELECT field1,group_function(field2)
FROM table
GROUP BY field1; # 返回的結果中field1為一組,field2為一組
# 包含在GROUP BY子句中的 列/欄位 也可以不包含在SELECT中,以下寫法同樣正確:
SELECT SUM(field2)
FROM table
GROUP BY field1; # 以field1分組,計算field2欄位的總和
使用多個欄位分組:
點擊查看代碼
SELECT field1,field2,SUM(field3)
FROM table
GROUP BY filed1,filed2;
HAVING 子句:
用於過濾分組,不能單獨使用,必須跟在GROUP BY後使用。
點擊查看代碼
SELECT field1,SUM(field2)
FROM table
GROUP BY field1
HAVING SUM(field2)>1000; # 返回SUM()大於1000的分組
非法使用聚合函數 : 不能在 WHERE 子句中使用聚合函數。
WHERE 和 HAVING 的區別:
1.WHERE可以直接使用表中的欄位作為篩選條件,但不能使用分組中的計算函數作為篩選條件;HAVING 必須要與 GROUP BY 配合使用,可以把分組計算的函數和分組欄位作為篩選條件。
2.如果需要通過連接從關聯表中獲取需要的數據,WHERE 是先篩選後連接,而 HAVING 是先連接後在結果集中篩選,執行效率低。