【MySQL】データをカンマ区切りで横に集計する方法


ここではMySQLで、データをカンマ区切りで横に集計する方法を紹介しています。

データをカンマ区切りで横に集計する方法

データをカンマ区切りで集計させるには、GROUP_CONCATを使います。

次のようにtab1テーブルに値が登録されているとき、部門ごとに従業員の氏名をカンマ区切りで集計することが出来ます。

mysql> SELECT emp_id,emp_name,dept FROM tab1;
+--------+-----------+-------+
| emp_id | emp_name  | dept  |
+--------+-----------+-------+
| 00001  | Suzuki    | HR    |
| 00002  | Tanaka    | SALES |
| 00003  | Kizaki    | SALES |
| 00004  | Takahashi | DEV   |
| 00005  | Yoshida   | DEV   |
+--------+-----------+-------+
5 rows in set (0.00 sec)

次のSQLでは、「GROUP_CONCAT(DISTINCT emp_name)」で従業員の氏名をカンマ区切りで集計しています。

mysql> SELECT dept,GROUP_CONCAT(DISTINCT emp_name) FROM tab1 GROUP BY dept;
+-------+---------------------------------+
| dept  | GROUP_CONCAT(DISTINCT emp_name) |
+-------+---------------------------------+
| DEV   | Takahashi,Yoshida               |
| HR    | Suzuki                          |
| SALES | Kizaki,Tanaka                   |
+-------+---------------------------------+
3 rows in set (0.00 sec)