SQLのGROUP BYとは?GROUP BY句の構文や使用例を解説
仕事や勉強等で、テーブルのカラムを集計して件数や最大値を取得する処理をSQLで行いたいと思ったことはありませんか?
ここでは、上記の処理をSQLで行う「GROUP BY」句について基本的な説明をしていきます。
この記事を作成した環境は下記になります。
データベース:MySQL8.1.0
SQL実行ツール:A5:SQL Mk-2 (ver2.18.3)
以下の説明では、こちらのテーブルを使用します。
〇sample01
Company | name | value |
A社 | マウス | 1200 |
B社 | マウス | 1500 |
C社 | マウス | 2000 |
A社 | キーボード | 3500 |
A社 | PCケース | 4500 |
B社 | モニター | 18000 |
C社 | モニター | 25000 |
C社 | USBケーブル | 300 |
A社 | USBケーブル | 1400 |
目次
1.GROUP BY句について
1-1.GROUP BY句とは
GROUP BY句は、指定したカラムをグループ化する機能です。指定したカラムの合計値、件数、平均、最大、最小も取得できます。
1-2.GROUP BY句の構文
SELECT [カラム名] FROM [テーブル名] GROUP BY [グループ化したいカラム名、条件];
2.GROUP BY句の使用例
2-1.基本的な使用例
重複しない商品名を取得する
SELECT name AS '商品名' FROM sample01 GROUP BY name;
結果:
商品名 | sum(value) |
マウス | 4700 |
キーボード | 3500 |
PCケース | 4500 |
モニター | 43000 |
USBケーブル | 1700 |
2-2.グループ化したデータから値を取得する場合
2-2-1.合計値を取得
各商品のvalueの合計値を取得する
SELECT name AS '商品名', SUM(value) FROM sample01 GROUP BY name;
結果:
商品名 | sum(value) |
マウス | 4700 |
キーボード | 3500 |
PCケース | 4500 |
モニター | 43000 |
USBケーブル | 1700 |
2-2-2.件数を取得
各会社の商品数を取得する
SELECT Company AS '会社名', COUNT(name) AS '商品数' FROM sample01 GROUP BY Company;
結果:
会社名 | 商品数 |
A社 | 4 |
B社 | 2 |
C社 | 3 |
2-2-3.平均値を取得
各商品の平均値段を取得する
SELECT name AS '商品名', ROUND(AVG(value)) AS '値段の平均' FROM sample01 GROUP BY name;
結果:
商品名 | sum(value) |
マウス | 1567 |
キーボード | 3500 |
PCケース | 4500 |
モニター | 21500 |
USBケーブル | 850 |
2-2-4.最大値を取得
各商品の最大値を取得する
SELECT name AS '商品名', MAX(value) AS '最大の値段' FROM sample01 GROUP BY name;
結果:
商品名 | sum(value) |
マウス | 2000 |
キーボード | 3500 |
PCケース | 4500 |
モニター | 25000 |
USBケーブル | 1400 |
2-2-5.最小値を取得
各商品の最小値を取得する
SELECT name AS '商品名', MIN(value) AS '最小の値段' FROM sample01 GROUP BY name;
結果:
商品名 | sum(value) |
マウス | 1200 |
キーボード | 3500 |
PCケース | 4500 |
モニター | 18000 |
USBケーブル | 300 |
2-3.それ以外の使い方
各商品の値段が1500以上の件数を取得する
SELECT name AS '商品名', COUNT(value) AS '1500以上の件数' FROM sample01 GROUP BY name, value > 1500;
結果:
商品名 | sum(value) |
マウス | 2 |
マウス | 1 |
キーボード | 1 |
PCケース | 1 |
モニター | 2 |
USBケーブル | 2 |
3.最後に
GROUP BY句は、上記以外にも応用方法が多数あります。業務に勉強に役立ててください。
コメント