SQL Strategy - A site to master SQL while executing it on the Web
Home >> SQL Strategy - Grouping (GROUP BY)

Grouping (GROUP BY)

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

1.GROUP BYの使い方

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

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

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

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

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

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

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

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

■Practice

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


2.Grouping (GROUP BY)

Beginner System Administrator AM Q27, Fall 2001
Which SQL statement is appropriate for obtaining a "Result" Table from an "Order" Table?
Order
goodsNoclientNoquantity
G1C130
G1C210
G2C250
G2C310
G3C320

結果
goodsNo 
G140
G260
G320

ASELECT clientNo,SUM(quantity)
FROM Order
ORDER BY goodsNo

BSELECT clientNo,quantity
FROM Order
GROUP BY goodsNo

CSELECT goodsNo,SUM(quantity)
FROM Order
GROUP BY goodsNo

DSELECT goodsNo,quantity
FROM Order
GROUP BY goodsNo

Answer

C

Explanation

A and B are different because the item shown is customer No. (B is also grammatically incorrect)

D has incorrect grammar.(If you want to display items other than those specified in GROUP BY, you must use the set function.) Therefore, the remaining C is Answer.

This completes [Grouping (GROUP BY)].