人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

mysql之group by和having用法詳解

發(fā)布日期:2022-02-08 14:47 | 文章來源:站長之家

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

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

某個員工信息表結(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 

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

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

查詢結(jié)果如下:

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

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

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

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

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

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

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

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語句中指定的每個列名也在GROUP BY子句中提到,未在這兩個地方提到的列名將產(chǎn)生錯誤。GROUP BY子句對dept和edlevel的每個唯一組合各返回一行。

GROUP BY子句之后使用Having子句

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

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

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)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部