データベース | ORACLE | MySQL | PostgreSQL |
対応状況 | ○ | ○ | ○ |
目次
説明
「GROUP BY」を使用することにより、指定した列でグループを作成して合計、平均などの集計をすることが出来ます。
GRUP BYと組み合わせて使える関数
MAX | 最大値 |
MIN | 最小値 |
AVG | 平均値 |
SUM | 合計 |
COUNT | カウント |
構文
SELECT 列名・・・ FROM 表名 GROUP BY 列名;
実際に使用した例
たとえば下の表の用に、ユーザID,購入金額を管理している表があるとします。mysql> select * from uriage; +---------+-------+ | user_id | money | +---------+-------+ | 1 | 20000 | | 1 | 40000 | | 1 | 50000 | | 2 | 30000 | | 2 | 50000 | | 3 | 50000 | | 4 | 50000 | | 4 | 4000 | | 5 | 14000 | +---------+-------+ 9 rows in set (0.09 sec)この表からユーザIDごとに購入金額の合計を計算したいときなどにGROUP BYを使用します。 ユーザごとに購入金額を計算した例
mysql> SELECT user_id,sum(money) FROM uriage -> GROUP BY user_id; +---------+------------+ | user_id | sum(money) | +---------+------------+ | 1 | 110000 | | 2 | 80000 | | 3 | 50000 | | 4 | 54000 | | 5 | 14000 | +---------+------------+ 5 rows in set (0.05 sec)ユーザごとに購入回数を計算した例
mysql> SELECT user_id,COUNT(money) FROM uriage -> GROUP BY user_id; +---------+--------------+ | user_id | COUNT(money) | +---------+--------------+ | 1 | 3 | | 2 | 2 | | 3 | 1 | | 4 | 2 | | 5 | 1 | +---------+--------------+ 5 rows in set (0.02 sec)