MySQL分組過濾

使用HAVING字句對(duì)分組結(jié)果進(jìn)行過濾。

示例

有一個(gè)表格socre_sheet

mysql> SELECT * FROM score_sheet;
+----+--------+---------+-------+
| id | name   | subject | score |
+----+--------+---------+-------+
|  1 | 張三   | 語文    |    80 |
|  2 | 李四   | 語文    |    90 |
|  3 | 王五   | 語文    |    60 |
|  4 | 王胖子 | 數(shù)學(xué)    |    59 |
|  5 | 張王五 | 英語    |  59.9 |
|  6 | 吳彥祖 | 英語    |  99.9 |
|  7 | 郭德綱 | 數(shù)學(xué)    |   100 |
|  8 | 郭敬明 | 數(shù)學(xué)    |    99 |
|  9 | 郭靖   | 英語    |    70 |
| 10 | 趙四   | 語文    |    61 |
+----+--------+---------+-------+

按科目subject對(duì)這個(gè)表格進(jìn)行分組,統(tǒng)計(jì)選每個(gè)subject的人數(shù):

mysql> SELECT subject, COUNT(subject) AS subject_count FROM score_sheet GROUP BY subject; 
+---------+---------------+
| subject | subject_count |
+---------+---------------+
| 語文    |             4 |
| 數(shù)學(xué)    |             3 |
| 英語    |             3 |
+---------+---------------+

過濾分組結(jié)果,只顯示選擇人數(shù)大于3的subject

mysql> SELECT subject, COUNT(subject) AS subject_count FROM score_sheet GROUP BY subject HAVING subject_count>3;
+---------+---------------+
| subject | subject_count |
+---------+---------------+
| 語文    |             4 |
+---------+---------------+

另外,我們?cè)谇懊鎸W(xué)到,WHERE字句也可以對(duì)數(shù)據(jù)進(jìn)行過濾。

WHERE和HAVING的不同

WHERE是針對(duì)行的過濾。分組時(shí),WHERE先對(duì)要查詢的數(shù)據(jù)進(jìn)行行過濾,然后再對(duì)過濾后的數(shù)據(jù)進(jìn)行分組。

HAVING對(duì)分組結(jié)果進(jìn)行過濾。先分組,再HAVING過濾。

因此,再語法順序上,WHEREGROUP BY前,而HAVINGGROUP BY后。

綜合示例

先過濾socre_sheet中分?jǐn)?shù)不小于60分的記錄,再按科目subject對(duì)進(jìn)行分組,統(tǒng)計(jì)選每個(gè)subject的人數(shù):

mysql> SELECT subject, COUNT(subject) AS subject_count FROM score_sheet WHERE score>=60 GROUP BY subject;
+---------+---------------+
| subject | subject_count |
+---------+---------------+
| 語文    |             4 |
| 英語    |             2 |
| 數(shù)學(xué)    |             2 |
+---------+---------------+

再對(duì)以上結(jié)果過濾出subject_count大于3的結(jié)果:

mysql> SELECT subject, COUNT(subject) AS subject_count FROM score_sheet WHERE score>=60 GROUP BY subject HAVING subject_count>3;
+---------+---------------+
| subject | subject_count |
+---------+---------------+
| 語文    |             4 |
+---------+---------------+
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 這一篇最主要是記錄下命令,方便以后查找 使用Mysql 創(chuàng)建數(shù)據(jù)庫 create database mysql_t...
    Treehl閱讀 663評(píng)論 0 0
  • 本節(jié)課我們會(huì)涉及到SELECT下的兩個(gè)字句,分別是GROUP BY 以及 HAVING 上一節(jié)我們學(xué)習(xí)了聚合函數(shù),...
    杜大個(gè)閱讀 1,444評(píng)論 0 1
  • (一)幾個(gè)數(shù)據(jù)庫相關(guān)的概念 1.數(shù)據(jù)庫 數(shù)據(jù)庫: 保存有組織數(shù)據(jù)的容器。 數(shù)據(jù)的所有存儲(chǔ)、檢索、管理和處理實(shí)際上是...
    快樂的小飛熊閱讀 627評(píng)論 0 1
  • 一,DDL 1,創(chuàng)建數(shù)據(jù)庫 CREATE DATABASE 數(shù)據(jù)庫名稱;2,刪除數(shù)據(jù)庫 DROP DATABASE...
    Khada閱讀 507評(píng)論 0 0
  • 眼前是生機(jī)勃勃的景象 為這綠色的叢林 鑲上一絲柔光 漸漸的 屏住呼吸 靜靜的等待 定一個(gè)邊框 放在書桌前 一雙凝視...
    墨界留白閱讀 413評(píng)論 0 6

友情鏈接更多精彩內(nèi)容