文章目錄
- 1. 分組的基本使用
- 2. 分組過濾
- 3. group_concat的使用
MySQL中使用 group by 對資料進行分組。它必須配合聚合函數進行使用,對資料進行分組後可以執行 count 、 sum 、 avg 、 max 和 min 等操作。
1. 分組的基本使用
下面是一個簡單的示例,将員工表 employee 按照部門 department 進行分組,統計各個部門的人數。
完整的表中資料如下:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPRN2bwhFZ2JlMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2cDNyEzNxcTMzEjNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
使用如下語句對資料進行分組:
結果如下:
2. 分組過濾
之前我們對資料過濾使用 WHERE 子句, 對于分組後的資料我們使用 HAVING 子句。此時, WHERE 子句表示對分組前資料的過濾。
- WHERE 表示對分組前的資料進行過濾。
- HAVING 表示對分組後的資料進行過濾。
我們想要統計,員工工資不小于10000且部門人數多于1個人的部門統計。
SQL語句可以這麼寫:
SELECT department, Count(*) FROM employee
WHERE salary >= 10000
GROUP BY department
HAVING Count(*) > 1;
結果如下:
3. group_concat的使用
group_concat 配合 group by 一起使用,用于将某一列的值按指定的分隔符進行拼接,MySQL中預設為逗号。
比如我們按照部門分組後,想檢視每個部門中都有誰,SQL語句可以寫成這樣:
SELECT department, Count(*), GROUP_CONCAT(name)
FROM employee
GROUP BY department;
結果如下: