SQL GROUP BY句の意味や使い方を知りたいときはないでしょうか。
けど、そんな中で悩むことは、
・「SQL GROUP BY句」の使い方がわからない
ですよね。
今回はそんなお悩みを解決する
・「SQL GROUP BY句」の使用例
についてまとめます!
もくじ
GROUP BY句の基礎
GROUP BY句とは
GROUP BY句は、データベース内のデータを特定の列を基準にグループ化して集計するためのSQL句です。
類似の値を持つ行をグループ化し、そのグループごとに集計を行うことができます。
GROUP BY句の構文
GROUP BY句は以下の構文で使用されます。
SELECT 列1, 列2, 集計関数(列3)
FROM テーブル名
GROUP BY 列1, 列2;
GROUP BY句の中で指定した列に基づいてデータがグループ化され、指定した列以外の列に対して集計関数を適用することができます。
GROUP BY句の例
商品カテゴリ別の売り上げ合計を集計するクエリの例です。
この例では、商品カテゴリごとに売上を合計しています。
SELECT カテゴリ, SUM(売上)
FROM 売上テーブル
GROUP BY カテゴリ;
GROUP BY句の応用
GROUP BY句による集計
GROUP BY句を使用する主な目的は、集計です。
特定の列をグループ化し、それぞれのグループに対して集計関数(SUM、COUNT、AVGなど)を適用することで、集計結果を取得します。
サンプルコード
このクエリは、部署ごとに売上額を集計し、各部署の売り上げ合計を計算します。
SELECT 部署, SUM(売上額) AS 部署総売上額
FROM 売上テーブル
GROUP BY 部署;
GROUP BY句による並び替え
GROUP BY句を使用すると、デフォルトではグループの順序が不定ですが、GROUP BY句の後にORDER BY句を使用することで、グループの順序を指定することができます。
サンプルコード
このクエリは、商品IDごとに売上額を集計し、売上額の高い順に結果を並び替えます。
SELECT 商品ID, SUM(売上額) AS 総売上額
FROM 売上テーブル
GROUP BY 商品ID
ORDER BY 総売上額 DESC;
GROUP BY句による絞り込み
このクエリは、部署ごとに売上額を集計し、部署総売上額が1000を超える部署の結果を表示します。
サンプルコード
SELECT 部署, SUM(売上額) AS 部署総売上額
FROM 売上テーブル
GROUP BY 部署
HAVING 部署総売上額 > 1000;
GROUP BY句による複数条件の設定
GROUP BY句では、複数の列を指定して複数の条件でグループ化することも可能です。複数の列を指定することで、より詳細なグループ化が行えます。
サンプルコード
このクエリは、部署と商品IDごとに売上額を集計し、部署商品別売上額が500を超える結果を表示します。
SELECT 部署, 商品ID, SUM(売上額) AS 部署商品別売上額
FROM 売上テーブル
GROUP BY 部署, 商品ID
HAVING 部署商品別売上額 > 500;
GROUP BY句を使った実務応用事例
売り上げ集計の例
日付ごとの売り上げを集計する際に、GROUP BY句を使用して日付ごとに集計を行い、売り上げ合計を求めることができます。
サンプルデータ
id | 商品ID | 売上額 |
---|---|---|
1 | 101 | 500 |
2 | 102 | 300 |
3 | 101 | 800 |
4 | 103 | 700 |
5 | 102 | 450 |
サンプルコード
SELECT SUM(売上額) AS 総売上額
FROM 売上テーブル;
結果
総売上額 |
---|
2750 |
商品別の売り上げランキングの例
商品ごとの売り上げランキングを作成する際に、商品IDごとに集計して、売り上げの高い順に並べることができます。
サンプルデータ
id | 商品ID | 売上額 |
---|---|---|
1 | 101 | 500 |
2 | 102 | 300 |
3 | 101 | 800 |
4 | 103 | 700 |
5 | 102 | 450 |
サンプルコード
SELECT 商品ID, SUM(売上額) AS 総売上額
FROM 売上テーブル
GROUP BY 商品ID
ORDER BY 総売上額 DESC;
結果
商品ID | 総売上額 |
---|---|
101 | 1300 |
102 | 750 |
103 | 700 |
部署別の売り上げ集計の例
従業員の所属部署ごとに売り上げを集計する際に、部署IDごとに集計を行い、部署ごとの売り上げ合計を求めることができます。
サンプルデータ
id | 名前 | 部署 |
---|---|---|
1 | 従業員A | 部署A |
2 | 従業員B | 部署B |
3 | 従業員C | 部署A |
4 | 従業員D | 部署C |
5 | 従業員E | 部署B |
サンプルコード
SELECT 部署, SUM(売上額) AS 部署総売上額
FROM 売上テーブル
JOIN 従業員テーブル ON 売上テーブル.従業員ID = 従業員テーブル.id
GROUP BY 部署;
結果
部署 | 部署総売上額 |
---|---|
部署A | 1300 |
部署B | 750 |
部署C | 700 |
さいごに
いかがでしょうか。
今回は、
・「SQL GROUP BY句」の使用例
についてまとめました。
また、他にも学習に役に立つ情報がありますので、よろしければご参照頂ければと思います。