濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫(kù) > mysql之group by和having用法詳解

mysql之group by和having用法詳解

熱門標(biāo)簽:臨清電話機(jī)器人 大眾點(diǎn)評(píng)星級(jí)酒店地圖標(biāo)注 高清地圖標(biāo)注道路 話務(wù)外呼系統(tǒng)怎么樣 云南電商智能外呼系統(tǒng)價(jià)格 智能外呼系統(tǒng)復(fù)位 拉卡拉外呼系統(tǒng) 外東北地圖標(biāo)注 400電話可以辦理嗎

GROUP BY語法可以根據(jù)給定數(shù)據(jù)列的每個(gè)成員對(duì)查詢結(jié)果進(jìn)行分組統(tǒng)計(jì),最終得到一個(gè)分組匯總表。

select子句中的列名必須為分組列或列函數(shù),列函數(shù)對(duì)于group by子句定義的每個(gè)組返回一個(gè)結(jié)果。

某個(gè)員工信息表結(jié)構(gòu)和數(shù)據(jù)如下:

  id  name  dept  salary  edlevel  	 hiredate 
  1    張三  開發(fā)部 2000     3          2009-10-11
  2    李四  開發(fā)部 2500     3          2009-10-01
  3    王五  設(shè)計(jì)部 2600     5  	2010-10-02
  4    王六  設(shè)計(jì)部 2300     4 	  	2010-10-03
  5    馬七  設(shè)計(jì)部 2100     4 		2010-10-06
  6    趙八  銷售部 3000     5 		2010-10-05
  7    錢九  銷售部 3100     7 		2010-10-07
  8    孫十  銷售部 3500     7 		2010-10-06 

我想列出每個(gè)部門最高薪水的結(jié)果,sql語句如下:

select dept , max(salary) AS MAXIMUM
FROM STAFF
GROUP BY DEPT

查詢結(jié)果如下:

dept       MAXIMUM
開發(fā)部      4500
設(shè)計(jì)部      2600
銷售部      3500

解釋一下這個(gè)結(jié)果:

1、 滿足“SELECT子句中的列名必須為分組列或列函數(shù)”,因?yàn)镾ELECT有g(shù)roup by中包含的列dept;

2、“列函數(shù)對(duì)于group by子句定義的每個(gè)組各返回一個(gè)結(jié)果”,根據(jù)部門分組,對(duì)每個(gè)部門返回一個(gè)結(jié)果,就是每個(gè)部門的最高薪水。

將where子句與group by子句一起使用

分組查詢可以在形成組和計(jì)算列函數(shù)之前具有消除非限定行的標(biāo)準(zhǔn)where子句。必須在group by子句之前指定where子句

例如,查詢公司2010年入職的各個(gè)部門每個(gè)級(jí)別里的最高薪水

SELECT dept,edlevel,MAX(salary) AS MAXIMUM
FROM STAFF
WHERE hiredate > '2010-01-01'
GROUP BY dept,edlevel

查詢結(jié)果如下:

dept     edlevel     MAXIMUM
設(shè)計(jì)部      4           2300
設(shè)計(jì)部      5	       2600
銷售部      5	       3000
銷售部      7 	       3500

在SELECT語句中指定的每個(gè)列名也在GROUP BY子句中提到,未在這兩個(gè)地方提到的列名將產(chǎn)生錯(cuò)誤。GROUP BY子句對(duì)dept和edlevel的每個(gè)唯一組合各返回一行。

GROUP BY子句之后使用Having子句

可應(yīng)用限定條件進(jìn)行分組,以便系統(tǒng)僅對(duì)滿足條件的組返回結(jié)果。因此,在GROUP BY子句后面包含了一個(gè)HAVING子句。HAVING類似于WHERE(唯一的差別是WHERE過濾行,HAVING過濾組)AVING支持所有WHERE操作符。

例如,查找雇員數(shù)超過2個(gè)的部門的最高和最低薪水:

SELECT dept ,MAX(salary) AS MAXIMUM ,MIN(salary) AS MINIMUM
FROM STAFF
GROUP BY dept
HAVING COUNT(*) > 2
ORDER BY dept

查詢結(jié)果如下:

dept        MAXIMUM             MINIMUM
設(shè)計(jì)部      2600  		2100
銷售部      3500 		3000

例如,查找雇員平均工資大于3000的部門的最高薪水和最低薪水:

SELECT dept,MAX(salary) AS MAXIMUM,MIN(salary) AS MINIMUM
FROM STAFF
GROUP BY dept
HAVING AVG(salary) > 3000
ORDER BY dept

查詢結(jié)果如下:

dept   	MAXIMUM   MINIMUM
銷售部     	 3500		3000

到此這篇關(guān)于mysql之group by和having用法詳解的文章就介紹到這了,更多相關(guān)mysql之group by和having內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Mysql row number()排序函數(shù)的用法和注意
  • MySQL隱式類型轉(zhuǎn)換導(dǎo)致索引失效的解決
  • 淺談MySQL數(shù)據(jù)查詢太多會(huì)OOM嗎
  • Django搭建MySQL主從實(shí)現(xiàn)讀寫分離
  • MySQL多表連接查詢?cè)斀?/li>
  • 一篇文章帶你了解MySQL數(shù)據(jù)庫(kù)基礎(chǔ)
  • springboot后端配置多個(gè)數(shù)據(jù)源、Mysql數(shù)據(jù)庫(kù)的便捷方法
  • MySQL DEFINER具體使用詳解
  • MYSQL row_number()與over()函數(shù)用法詳解

標(biāo)簽:阿里 揚(yáng)州 溫州 山西 福州 無錫 三明 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《mysql之group by和having用法詳解》,本文關(guān)鍵詞  mysql,之,group,和,having,用法,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《mysql之group by和having用法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于mysql之group by和having用法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    安陆市| 柘荣县| 孝义市| 保康县| 孟津县| 临颍县| 沂水县| 长兴县| 涿鹿县| 永寿县| 灵山县| 诸暨市| 塔城市| 东山县| 青铜峡市| 新化县| 牡丹江市| 洛川县| 稷山县| 罗山县| 马关县| 镇原县| 阿克苏市| 信宜市| 黔南| 阜平县| 方正县| 建德市| 鞍山市| 九台市| 胶州市| 调兵山市| 海林市| 迭部县| 揭西县| 夏津县| 白山市| 大理市| 晋城| 利川市| 延川县|