聚合函式
聚合函式是對一組資料進行匯總輸出的函式,
輸入:一組資料集合
輸出:單個值
舉例:回傳一組資料的最大值、平均數、最小、方差等操作,
常見函式舉例:
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 是先連接后在結果集中篩選,執行效率低,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/500215.html
標籤:其他
上一篇:未來資料庫需要關心的硬核創新
下一篇:MySQL實戰45講 12
