SQL攻略 - Web上でSQLを実行しながらマスターするサイト
ホーム >> SQL攻略 - グループ化(GROUP BY)

グループ化(GROUP BY)

特定のカラムでグループ化する方法を学びます

1.GROUP BYの使い方

--JOB(仕事)別のSAL(給料)の平均を求める
SELECTJOB,AVG(SAL)
FROMEMP
GROUP BYJOB
■GROUP BYの使い方

集合関数を使用し、引数のカラムの最大値、最小値、平均などを求める方法を学習しました。GROUP BYを使用すると、指定したカラムごとにグループ化し、集合関数の計算結果を取得することができます。グループ化の方法はグループ化するカラムを[GROUP BY カラム名]のように記述します。

SELECT文に記載することができるカラムは、GROUP BYで指定したカラムと集合関数を記述することが出来ます。

■WHERE条件によるレコードの選択

通常のSELECT文と同じように、WHERE条件はを記述することが出来ます。まず、WHERE条件によりレコードが抽出され、GROUP BYで指定したカラムごとにグループ化され、集合関数で計算結果が求めらえます。

SELECTJOB,AVG(SAL)
FROMEMP
WHEREDEPTNO <> 10
GROUP BYJOB

■複数のカラムによるグループ化

複数のカラムによるグループ化を行う場合は、GROUP BYの後ろにカラム名をカンマ区切りで記述します。

■実習

それでは実習です。1題出題します。


2.グループ化(GROUP BY)の過去問題

初級システムアドミニストレータ午前平成13年秋問27
“注文”表から“結果”表を得るための適切な SQL 文はどれか。
注文
商品番号顧客番号注文数量
G1C130
G1C210
G2C250
G2C310
G3C320

結果
商品番号 
G140
G260
G320

SELECT 顧客番号,SUM(注文数量)
FROM 注文
ORDER BY 商品番号

SELECT 顧客番号,注文数量
FROM 注文
GROUP BY 商品番号

SELECT 商品番号,SUM(注文数量)
FROM 注文
GROUP BY 商品番号

SELECT 商品番号,注文数量
FROM 注文
GROUP BY 商品番号

正解



解説

アとイは表示している項目が顧客番号なので違います。(イは文法も誤りです)

エは文法が誤っています。(GROUP BYに指定した項目以外を表示する場合は、集合関数を使う必要があります。)よって残りのウが正解です。

これで[グループ化(GROUP BY)]は終了です。