mysql?分組函數(shù)和分組查詢使用詳解
#1.分組函數(shù)
功能:用作統(tǒng)計(jì)使用,又稱聚合函數(shù),統(tǒng)計(jì)函數(shù),組函數(shù)
分類: sum :求和,avg 平均值,max最大值,min最小值,count計(jì)算個(gè)數(shù)
特點(diǎn):
sum, avg 一般用于處理數(shù)值型
max ,min ,count 可以處理任何類型
是否忽略Null
count:
MYISAM 存儲(chǔ)引擎下,COUNT() 的效率高
INNODB 存儲(chǔ)引擎下,COUNT()和 COUNT(1)的效率差不多,比COUNT(字段)要高一些
1.簡(jiǎn)單的使用
SELECT SUM(salary) FROM employees; SELECT AVG(salary) FROM employees; SELECT MIN(salary) FROM employees; SELECT MAX(salary) FROM employees; SELECT COMMIT(salary) FROM employees; SELECT SUM(salary) 和,AVG(salary) 平均,MAX(salary) 最大,MIN(salary) 最小 FROM employees;
#1.count 函數(shù)的詳細(xì)介紹 //count: //MYISAM 存儲(chǔ)引擎下,COUNT() 的效率高 //INNODB 存儲(chǔ)引擎下,COUNT()和 COUNT(1)的效率差不多,比COUNT(字段)要高一些 SELECT COUNT(salary) FROM employees; SELECT COUNT(*) FROM employees; SELECT COUNT(1) FROM employees;
#和分組函數(shù)一同查詢的字段有限制 #案例1.查詢公司員工的工資最大值,最小值,平均值,總和 SELECT MAX(salary) mx_sal,MIN(salary) mi_sal,AVG(salary) ag_sal,SUM(salary) sm_sal FROM employees; #案列2. 查詢員工表中的最大入職時(shí)間和最小入職時(shí)間的相差天數(shù) SELECT DATEDIFF(MAX(hiredate),MIN(hiredate)) DIFFRENCE FROM employees; #案例3 查詢部門編號(hào)為90的員工個(gè)數(shù) SELECT COUNT(*) FROM employees WHERE department_id =90;
分組數(shù)據(jù),分組查詢
#GROUP BY 字句語(yǔ)法
可以使用GROUP BY子句將表中的數(shù)據(jù)分成若干組
語(yǔ)法: SELECT 分組函數(shù),列(要求出現(xiàn)在grounp by的后面)
FROM 表
【where 篩選條件】
grounp by 分組的列表
【order by 子句】
ps: 查詢列表必須特殊,要求是分組函數(shù)和group by后出現(xiàn)的字段
#案列1:查詢每個(gè)部門的平均工資 SELECT MAX(salary),job_id FROM employees GROUP BY job_id; #案列2: 查詢每個(gè)工種的最高工資 SELECT MAX(salary),job_id FROM employees; GROUP BY job_id; #案列3 查詢每個(gè)位置上的部門個(gè)數(shù) SELECT COUNT(*),location_id FROM departments GROUP BY location_id;
#添篩選條件 #案例1:查詢郵箱中包含a字符的,每個(gè)部門的平均工資 SELECT AVG(salary),department_id FROM employees; WHERE email LIKE '%a%' GROUP BY department_id; #案例2 查尋有獎(jiǎng)金的每個(gè)領(lǐng)導(dǎo)手下員工的最高工資 SELECT MAX(salary),manager_id FROM employees; WHERE commission_pct IS NOT NULL GROUP BY manager_id; #案例3 查詢那個(gè)部門的員工個(gè)數(shù)>2 #1.查詢每個(gè)部門的員工個(gè)數(shù) SELECT COUNT(*),department_id FROM employees; GROUP BY department_id; #2.根據(jù)1的結(jié)果進(jìn)行帥選,查詢那個(gè)部門的員工個(gè)數(shù)>2 SELECT COUNT(*),department_id FROM employees; GROUP BY department_id HAVING COUNT(*)>2; #案例4;查詢每個(gè)工種有獎(jiǎng)金的員工的最高工資>12000的工種編號(hào)和最高工資 # 1.查詢每個(gè)工種有獎(jiǎng)金的員工的最高工資 SELECT MAX(salary),job_id FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id; # 2.根據(jù)1結(jié)果繼續(xù)帥選,最高工資>12000 SELECT MAX(salary),job_id FROM employees WHERE commission_pct IS NOT NULL GROUP BY job_id HAVING MAX(salary)>12000;
到此這篇關(guān)于mysql 分組函數(shù) 分組查詢的文章就介紹到這了,更多相關(guān)mysql 分組函數(shù)分組查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL replace into 語(yǔ)句淺析(二)
這篇文章主要介紹了MySQL replace into 語(yǔ)句淺析(二),本文著重給出了幾個(gè)特殊案例分析,需要的朋友可以參考下2015-05-05MySQL中的用戶創(chuàng)建與權(quán)限管理
這篇文章主要介紹了MySQL中的用戶創(chuàng)建與權(quán)限管理,文章通過(guò)圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08MySQL執(zhí)行update語(yǔ)句和原數(shù)據(jù)相同會(huì)再次執(zhí)行嗎
這篇文章主要給大家介紹了關(guān)于MySQL執(zhí)行update語(yǔ)句和原數(shù)據(jù)相同是否會(huì)再次執(zhí)行的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04