SQL GROUP BY

1 min 27 views
データベースORACLEMySQLPostgreSQL
対応状況

説明

「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)
さすけ

さすけ

インフラエンジニアとして数々の大手サーバーを構築を実施し、現在はWebサーバーの構築、サイト作成を中心に活躍しています。

FOLLOW

カテゴリー:
関連記事