目次
GROUP BYとは?
GROUP(グループ)
群れ、集団、かたまり、集まり、(主義・趣味などを同じくする人の)集団、同好会、グループ、(党・教会などの)分派、小党派、…派
Weblio英和辞書
GROUPとは群れ・かたまりを意味し、SQLでも同様に「まとめる」という意味で使います
また記述方法はBYをつけて「GROUP BY」です
エクセルでは「ピボットテーブルを使ったグループ化」のイメージです
しっかり集約のイメージを頭の中で完成させないと
エラーが多発してしまう語法でもありますので
「何をまとめるか」を頭の中で意識しましょう
GROUP BYの使い方
SELECT 【列名】
FROM ***
WHERE ***
GROUP BY 【列名】
GROUP BY句はSELECT句にある列を指定することで、
その列を「まとめる」ことができます
まずはSELECT句に「列名だけ」を記述する方法をご紹介します
「商品名をまとめる」SQLを記述します
SELECT
商品名
GROUP BY
商品名
重複なく項目を抽出する方法は「DISTINCT」を使えば抽出することができます
GROUP BY句は「集約関数」と使うことが多く、その場合はDISTINCTは使えません
集約関数を使ったGROUP BY
GROUP BY句は集約関数を一緒に使うケースがほとんど
集約関数とはデータをまとめて計算する方法です
合計する「SUM」や数を数える「COUNT」などがあります
関数 | 概要 |
---|---|
SUM(列名) | 合計 |
AVG(列名) | 平均 |
COUNT(列名) | 件数 |
MAX(列名) | 最大値 |
MIN(列名) | 最小値 |
※集約関数のみ使う
SELECTに「集約関数」を記述することで、データを集約&計算することができます
SELECT
SUM(会計)
集約関数+GROUP BYを使う
ここから「GROUP BYの本質」
GROUP BYを使えば「項目ごとに集約」することができます
SELECTに「列名」と「集約関数」を両方記述することで、
指定した列をまとめて計算することができます
SELECT
商品名, SUM(会計)
GROUP BY
商品名
ここがとても分かりにくいので、イメージを段階に沿ってご説明します
よく間違えるポイント
集計関数を使うケースにおいて、間違えやすいポイントがあります
SELECTに集約関数を使っているのに、GROUP BY句を書いていない
言葉だけでは理解しにくいので、SELECT句とGROUP BY句を使った事例で
その違いを見ていきましょう
SELECT
商品名, 会計
SELECT
商品名, SUM(会計)
「商品名」はすべての商品を、「会計」は合計を出そうとしているので
最終的な結果の列数が異なってしまいます…
SELECT
商品名, SUM(会計)
GROUP BY
商品名
これが正解です!
複数項目をまとめる方法
GROUP BY句では複数カラムを並べて記述することができます
書いた順番にまとめることができます
SELECT 【列名1】,【列名2】,【列名3】
FROM ***
WHERE ***
GROUP BY 【列名1】,【列名2】,【列名3】
「テストの平均点をクラス、性別ごとに抽出する」SQLを記述します
SELECT
クラス, 性別,
AVG(国語), AVG(数学), AVG(英語)
GROUP BY
クラス, 性別
まとめ
今回は「GROUP BY句」についてご紹介してきました
よく使う語法ですが、エラーが頻出するので
しっかりとまとめるイメージをしてください