日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

9、使用GROUP BY分组查询

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 9、使用GROUP BY分组查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 MySQL 中,GROUP BY 關鍵字可以根據一個或多個字段對查詢結果進行分組。

使用 GROUP BY 關鍵字的語法格式如下:

GROUP BY <字段名>

其中,“字段名”表示需要分組的字段名稱,多個字段時用逗號隔開。

GROUP BY單獨使用

單獨使用 GROUP BY 關鍵字時,查詢結果會只顯示每個分組的第一條記錄。
例 1
下面根據 tb_students_info 表中的 sex 字段進行分組查詢,SQL 語句和運行結果如下:

mysql> SELECT `name`,`sex` FROM tb_students_info -> GROUP BY sex; +-------+------+ | name | sex | +-------+------+ | Henry || | Dany || +-------+------+

結果中只顯示了兩條記錄,這兩條記錄的 sex 字段的值分別為“女”和“男”。

GROUP BY 與 GROUP_CONCAT()

GROUP BY 關鍵字可以和 GROUP_CONCAT() 函數一起使用。GROUP_CONCAT() 函數會把每個分組的字段值都顯示出來。

例 2
下面根據 tb_students_info 表中的 sex 字段進行分組查詢,使用 GROUP_CONCAT() 函數將每個分組的 name 字段的值都顯示出來。SQL 語句和運行結果如下:

mysql> SELECT `sex`, GROUP_CONCAT(name) FROM tb_students_info -> GROUP BY sex; +------+----------------------------+ | sex | GROUP_CONCAT(name) | +------+----------------------------+ || Henry,Jim,John,Thomas,Tom | || Dany,Green,Jane,Lily,Susan | +------+----------------------------+

由結果可以看到,查詢結果分為兩組,sex 字段值為“女”的是一組,值為“男”的是一組,且每組的學生姓名都顯示出來了。

例 3
下面根據 tb_students_info 表中的 age 和 sex 字段進行分組查詢。SQL 語句和運行結果如下:

mysql> SELECT age,sex,GROUP_CONCAT(name) FROM tb_students_info -> GROUP BY age,sex; +------+------+--------------------+ | age | sex | GROUP_CONCAT(name) | +------+------+--------------------+ | 21 || John | | 22 || Thomas | | 22 || Jane,Lily | | 23 || Henry,Tom | | 23 || Green,Susan | | 24 || Jim | | 25 || Dany | +------+------+--------------------+

上面實例在分組過程中,先按照 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 語句和運行結果如下:

mysql> SELECT sex,COUNT(sex) FROM tb_students_info -> GROUP BY sex; +------+------------+ | sex | COUNT(sex) | +------+------------+ || 5 | || 5 | +------+------------+

結果顯示,sex 字段值為“女”的記錄是一組,有 5 條記錄;sex 字段值為“男”的記錄是一組,有 5 條記錄。

GROUP BY 與 WITH ROLLUP

WITH POLLUP 關鍵字用來在所有記錄的最后加上一條記錄,這條記錄是上面所有記錄的總和,即統計記錄數量。
例 5
下面根據 tb_students_info 表中的 sex 字段進行分組查詢,并使用 WITH ROLLUP 顯示記錄的總和。

mysql> SELECT sex,GROUP_CONCAT(name) FROM tb_students_info ->GROUP BY sex WITH ROLLUP; +------+------------------------------------------------------+ | sex | GROUP_CONCAT(name) | +------+------------------------------------------------------+ || Henry,Jim,John,Thomas,Tom | || Dany,Green,Jane,Lily,Susan | | NULL | Henry,Jim,John,Thomas,Tom,Dany,Green,Jane,Lily,Susan | +------+------------------------------------------------------+

查詢結果顯示,GROUP_CONCAT(name) 顯示了每個分組的 name 字段值。同時,最后一條記錄的 GROUP_CONCAT(name) 字段的值剛好是上面分組 name 字段值的總和。

總結

以上是生活随笔為你收集整理的9、使用GROUP BY分组查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。