GROUP BY
集計関数
データの集まりに対して行う演算を指定することができる。集計演算と呼ぶ。
例: 曲目一覧の曲数を表示する。
SELECT ジャンル,COUNT(*) FROM 曲目一覧; |
集計関数の種類は前回も示した。それ以外のものを含め、完全なリストは下記の11通りである。このうちCOUNT(*)とCOUNT(x)、VAR(x)とVARP(x)は等価なので、機能としては9種類が利用できる。
COUNT(*) | データ数 |
COUNT(x) | データ数 |
AVG(x) | xの平均値 |
MAX(x) | xの最大値 |
MIN(x) | xの最小値 |
SUM(x) | xの合計 |
FIRST(x) | 最初の値 |
LAST(x) | 最後の値 |
STDEV(x) | 標準編纂 |
VAR(x) | 分散 |
VARP(x) | 分散 |
GROUP
WHERE 節の後にGROUPを指定することで、同じフィールド値を持つレコードをグループにまとめ、それらについて集計関数を使うことができる。
たとえば以下のようなテーブルについて考える
G1 |
|
このテーブルに対し以下のようなクエリが可能である。
例1: 各学生の全成績の平均点を出力する。
SELECT AVG(成績) FROM G1 GROUP BY 氏名; |
例1: 各科目の最高得点を出力する。
SELECT MAX(成績) FROM G1 GROUP BY 科目; |
例1: 各学期の成績の分散を出力する。
SELECT STDEV(成績) FROM G1 GROUP BY 学期; |
例4: 各科目で 80点以上の学生の人数を出力する。
SELECT COUNT(*) FROM G1 WHERE 成績>=80 GROUP BY 科目; |
Group Byの動作イメージ
Group Byはわかりにくい機能なので、以下でイメージを示す。