MySQL必備基礎(chǔ)之分組函數(shù) 聚合函數(shù) 分組查詢詳解
一、簡單使用
SUM:求和(一般用于處理數(shù)值型)
AVG:平均(一般用于處理數(shù)值型)
MAX:最大(也可以用于處理字符串和日期)
MIN:最?。ㄒ部梢杂糜谔幚碜址腿掌冢?br />
COUNT:數(shù)量(統(tǒng)計非空值的數(shù)據(jù)個數(shù))
以上分組函數(shù)都忽略空NULL值的數(shù)據(jù)
SELECT SUM(salary) AS 和,AVG(salary) AS 平均,MAX(salary) AS 最大,MIN(salary) AS 最小,COUNT(salary) AS 數(shù)量 FROM employees;
二、搭配DISTINCT去重
(以上函數(shù)均可)
SELECT SUM(DISTINCT salary) AS 和,AVG(DISTINCT salary) AS 平均,COUNT( DISTINCT salary) AS 去重數(shù)量,COUNT(salary) AS 不去重數(shù)量 FROM employees;
三、COUNT()詳細介紹
#相當(dāng)于統(tǒng)計行數(shù)方式一 SELECT COUNT(*) FROM employees;
#相當(dāng)于統(tǒng)計行數(shù)方式二,其中1可以用其他常量或字段替換 SELECT COUNT(1) FROM employees;
效率問題:
MYISAM存儲引擎下,COUNT(*)
的效率高
INNODB存儲引擎下,COUNT(*)
和COUNT(1)
的效率差不多,比COUNT(字段)
高
因此一般用COUNT(*)
統(tǒng)計行數(shù)
四、分組查詢
#其中[]內(nèi)為可選 SELECT 分組函數(shù),列表(要求出現(xiàn)在 GROUP BY 的后面) FROM 表 [WHERE 篩選條件] GROUP BY 分組列表 [ORDER BY 子句]
示例:
#查詢每個工種的最高工資 SELECT MAX(salary) AS 最高工資,job_id FROM employees GROUP BY job_id;
#查詢每個部門中,郵箱包含a的員工的平均工資(分組前的篩選) SELECT AVG(salary) AS 平均工資,department_id FROM employees WHERE email LIKE '%a%' GROUP BY department_id;
#查詢部門員工數(shù)量大于2的部門的員工數(shù)量(分組后的篩選) #使用HAVING SELECT COUNT(*) AS 員工數(shù)量,department_id FROM employees GROUP BY department_id HAVING COUNT(*)>2;
#按照多字段 SELECT COUNT(*) AS 員工數(shù)量,job_id,department_id FROM employees GROUP BY job_id,department_id;
#完整結(jié)構(gòu) SELECT AVG(salary) AS 平均工資,department_id FROM employees WHERE department_id IS NOT NULL GROUP BY department_id HAVING AVG(salary)>9000 ORDER BY AVG(salary) DESC;
到此這篇關(guān)于MySQL必備基礎(chǔ)之分組函數(shù) 聚合函數(shù) 分組查詢詳解的文章就介紹到這了,更多相關(guān)MySQL 分組函數(shù) 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Java程序使用MySQL時返回參數(shù)為亂碼的示例教程
這篇文章主要介紹了解決Java程序使用MySQL返回參數(shù)為亂碼的問題的教程,通過示例來講解utf-8編碼在MySQL中的相關(guān)配置,示例需要的朋友可以參考下2015-12-12在windows上安裝不同(兩個)版本的Mysql數(shù)據(jù)庫的教程詳解
這篇文章主要介紹了在windows上安裝不同(兩個)版本的Mysql數(shù)據(jù)庫 ,需要的朋友可以參考下2019-04-04解決Mysql:ERROR?1045?(28000):Access?denied?for?user?‘roo
最近在我們連接數(shù)據(jù)庫的時候遇到個問題,感覺還挺容易遇到的,所以總結(jié)下,這篇文章主要給大家介紹了關(guān)于解決Mysql:ERROR?1045?(28000):Access?denied?for?user?‘root‘@‘localhost‘?(using?password:?NO)的方法,需要的朋友可以參考下2022-06-06MySQL按天分組統(tǒng)計一定時間內(nèi)的數(shù)據(jù)實例(沒有數(shù)據(jù)補0)
我們在用Mysql制作數(shù)據(jù)可視化圖表時候,經(jīng)常需要按照天對數(shù)據(jù)進行分組統(tǒng)計,下面這篇文章主要給大家介紹了關(guān)于MySQL按天分組統(tǒng)計一定時間內(nèi)的數(shù)據(jù),沒有數(shù)據(jù)補0的相關(guān)資料,需要的朋友可以參考下2023-03-03MySQL連接時出現(xiàn)2003錯誤的實現(xiàn)
本文主要介紹了MySQL連接時出現(xiàn)2003錯誤的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05