MYSQL 中GROUP BY

來源:互聯網
上載者:User

標籤:

group by 用法解析group by文法可以根據給定資料列的每個成員對查詢結果進行分組統計,最終得到一個分組匯總表。SELECT子句中的列名必須為分組列或列函數。列函數對於GROUP BY子句定義的每個組各返回一個結果。某個員工資訊表結構和資料如下:  id  name  dept  salary  edlevel  hiredate       1 張三 開發部 2000 3 2009-10-11      2 李四 開發部 2500 3 2009-10-01      3 王五 設計部 2600 5 2010-10-02      4 王六 設計部 2300 4 2010-10-03      5 馬七 設計部 2100 4 2010-10-06      6 趙八 銷售部 3000 5 2010-10-05      7 錢九 銷售部 3100 7 2010-10-07      8 孫十 銷售部 3500 7 2010-10-06 例如,我想列出每個部門最高薪水的結果,sql語句如下:SELECT DEPT, MAX(SALARY) AS MAXIMUMFROM STAFFGROUP BY DEPT查詢結果如下:      DEPT  MAXIMUM       開發部 2500      設計部 2600      銷售部 3500解釋一下這個結果:1、滿足“SELECT子句中的列名必須為分組列或列函數”,因為SELECT有GROUP BY DEPT中包含的列DEPT。2、“列函數對於GROUP BY子句定義的每個組各返回一個結果”,根據部門分組,對每個部門返回一個結果,就是每個部門的最高薪水。注意:計算的是每個部門(由 GROUP BY 子句定義的組)而不是整個公司的 MAX(SALARY)。例如,查詢每個部門的總的薪水數SELECT DEPT, sum( SALARY ) AS totalFROM STAFFGROUP BY DEPT查詢結果如下:DEPT  total 開發部 4500設計部 7000銷售部 9600將 WHERE 子句與 GROUP BY 子句一起使用分組查詢可以在形成組和計算資料行函數之前具有消除非限定行的標準 WHERE 子句。必須在GROUP BY 子句之前指定 WHERE 子句。例如,查詢公司2010年入職的各個部門每個層級裡的最高薪水SELECT DEPT, EDLEVEL, MAX( SALARY ) AS MAXIMUMFROM staffWHERE HIREDATE > ‘2010-01-01‘GROUP BY DEPT, EDLEVELORDER BY DEPT, EDLEVEL查詢結果如下:  DEPT  EDLEVEL  MAXIMUM       設計部 4 2300      設計部 5 2600      銷售部 5 3000      銷售部 7 3500注意:在SELECT語句中指定的每個列名也在GROUP BY子句中提到。未在這兩個地方提到的列名將產生錯誤。GROUP BY子句對DEPT和EDLEVEL的每個唯一組合各返回一行。在GROUP BY子句之後使用HAVING子句可應用限定條件進行分組,以便系統僅對滿足條件的組返回結果。為此,在GROUP BY子句後麵包含一個HAVING子句。HAVING子句可包含一個或多個用AND和OR串連的謂詞。每個謂詞將組特性(如AVG(SALARY))與下列之一進行比較:例如:尋找僱員數超過2個的部門的最高和最低薪水:SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUMFROM staffGROUP BY DEPTHAVING COUNT( * ) >2ORDER BY DEPT查詢結果如下:  DEPT  MAXIMUM  MINIMUM       設計部 2600 2100      銷售部 3500 3000例如:尋找僱員平均工資大於3000的部門的最高和最低薪水:SELECT DEPT, MAX( SALARY ) AS MAXIMUM, MIN( SALARY ) AS MINIMUMFROM staffGROUP BY DEPTHAVING AVG( SALARY ) >3000ORDER BY DEPT查詢結果如下:  DEPT  MAXIMUM  MINIMUM       銷售部 3500 3000

MYSQL 中GROUP BY

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.