9、使用GROUP BY分组查询
在 MySQL 中,GROUP BY 關鍵字可以根據一個或多個字段對查詢結果進行分組。
使用 GROUP BY 關鍵字的語法格式如下:
GROUP BY <字段名>其中,“字段名”表示需要分組的字段名稱,多個字段時用逗號隔開。
GROUP BY單獨使用
單獨使用 GROUP BY 關鍵字時,查詢結果會只顯示每個分組的第一條記錄。
例 1
下面根據 tb_students_info 表中的 sex 字段進行分組查詢,SQL 語句和運行結果如下:
結果中只顯示了兩條記錄,這兩條記錄的 sex 字段的值分別為“女”和“男”。
GROUP BY 與 GROUP_CONCAT()
GROUP BY 關鍵字可以和 GROUP_CONCAT() 函數一起使用。GROUP_CONCAT() 函數會把每個分組的字段值都顯示出來。
例 2
下面根據 tb_students_info 表中的 sex 字段進行分組查詢,使用 GROUP_CONCAT() 函數將每個分組的 name 字段的值都顯示出來。SQL 語句和運行結果如下:
由結果可以看到,查詢結果分為兩組,sex 字段值為“女”的是一組,值為“男”的是一組,且每組的學生姓名都顯示出來了。
例 3
下面根據 tb_students_info 表中的 age 和 sex 字段進行分組查詢。SQL 語句和運行結果如下:
上面實例在分組過程中,先按照 age 字段進行分組,當 age 字段值相等時,再把 age 字段值相等的記錄按照 sex 字段進行分組。
多個字段分組查詢時,會先按照第一個字段進行分組。如果第一個字段中有相同的值,MySQL 才會按照第二個字段進行分組。如果第一個字段中的數據都是唯一的,那么 MySQL 將不再對第二個字段進行分組。
GROUP BY 與聚合函數
在數據統計時,GROUP BY 關鍵字經常和聚合函數一起使用。
聚合函數包括 COUNT(),SUM(),AVG(),MAX() 和 MIN()。其中,
- COUNT() 用來統計記錄的條數;
- SUM() 用來計算字段值的總和;
- AVG() 用來計算字段值的平均值;
- MAX() 用來查詢字段的最大值;
- MIN() 用來查詢字段的最小值。
例 4
下面根據 tb_students_info 表的 sex 字段進行分組查詢,使用 COUNT() 函數計算每一組的記錄數。SQL 語句和運行結果如下:
結果顯示,sex 字段值為“女”的記錄是一組,有 5 條記錄;sex 字段值為“男”的記錄是一組,有 5 條記錄。
GROUP BY 與 WITH ROLLUP
WITH POLLUP 關鍵字用來在所有記錄的最后加上一條記錄,這條記錄是上面所有記錄的總和,即統計記錄數量。
例 5
下面根據 tb_students_info 表中的 sex 字段進行分組查詢,并使用 WITH ROLLUP 顯示記錄的總和。
查詢結果顯示,GROUP_CONCAT(name) 顯示了每個分組的 name 字段值。同時,最后一條記錄的 GROUP_CONCAT(name) 字段的值剛好是上面分組 name 字段值的總和。
總結
以上是生活随笔為你收集整理的9、使用GROUP BY分组查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3、MySQL查看存储过程
- 下一篇: 10、 HAVING:过滤分组