SQL

SQL GROUP BY

更新日:

データベース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)
  • この記事を書いた人

sasuke

インフラエンジニアからwebエンジニアに転職し両方の強みを生かしていければと思います。

-SQL

Copyright© さすけのプログラミング入門 , 2019 All Rights Reserved.