Training to develop the IT skills

IT技術の習得を日々記録します

内部統合して集計する GROUP BY

チームをすべてを表示させそのチームに所属している人数を集計

SELECT team.team_id,team.team_name,count(member.team_id) 
AS 'チーム人数'
FROM member RIGHT JOIN team
ON member.team_id = team.team_id
GROUP BY team.team_id;
+---------+-----------------+-----------------+
| team_id | team_name       | チーム人数      |
+---------+-----------------+-----------------+
|       1 | 現代            |               1 |
|       2 | 日本画          |               2 |
|       3 | ストリート      |               2 |
|       4 | デザイン        |               0 |
+---------+-----------------+-----------------+
4 rows in set (0.00 sec)

詳しく

count(member.team_id) AS 'チーム人数' とは

COUNT関数は引数に指定したカラム名のカラムの行数を返す
今回の場合は、メンバーテーブルのteam_idの行数をとってきている

AS でカラム名に対して別名をつけている

GROUP BY team.team_id; とは

count関数などを使ってカラムの値を集計する場合、集計はグループ単位で行われる。
グループとは特定のカラムに格納されている同じ値を持つデータをまとめたもので、
どのカラムを対象にグループ化するのかを指定するにはGROUP BY句を使用する。
今回はteam_idを対象にグループ化し、count関数で集計