SQL攻略 - Web上でSQLを実行しながらマスターするサイト
ホーム >> SQL攻略 - 集合関数(SUM、MAX、MIN、AVG、COUNT)

集合関数(SUM、MAX、MIN、AVG、COUNT)

抽出したレコードの総和、最大値、最小値、平均値、総数を求める集合関数を学習します。

1.集合関数の使い方

--SAL(給料)の、最大値と最小値を求める。
SELECTMAX(SAL),MIN(SAL)
FROMEMP
■集合関数の使い方

集合関数は引数に指定したカラムの値を集計し結果を返します。WHERE条件が指定されている場合は、抽出されたレコードを対象に集計した結果を返します。

■集合関数の種類と機能

SQLには以下の関数が提供されています。SUMとAVGは数値以外を引数にできません。

SUM引数の総和を求める。NULLの場合は集計対象外
MAX引数の最大値を求める。
MIN引数の最小値を求める。
AVG引数の平均値を求める。NULLの場合は集計対象外。
COUNT引数の値の総数を求める。NULLの場合は集計対象外。COUNT(*)と記載可。

■実習

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


2.集合関数(SUM、MAX、MIN、AVG、COUNT)の過去問題

初級システムアドミニストレータ午前平成15年秋問26
“出庫記録”表に対する SQL 文のうち,最も大きな値が得られるものはどれか。

出庫記録
商品番号日付 数量
NP20020031010 3
FP23320031010 2
NP20020031011 1
FP23320031011 2

SELECT AVG(数量) FROM 出庫記録 WHERE 商品番号 ='NP200'
SELECT COUNT(*) FROM 出庫記録
SELECT MAX(数量) FROM 出庫記録
SELECT SUM(数量) FROM 出庫記録 WHERE 日付 = '20031011'
正解



解説

順番に実行結果を検証していけば正解にたどり着きます。

アはWHERE 商品番号 ='NP200'の数量の平均値を求めていますから2
イはレコード件数なので4
ウは数量の最大値を求めていますから3
エはWHERE 日付 = '20031011'の数量の合計値なので3

よって最大の値のイが正解になります。

これで集合関数(SUM、MAX、MIN、AVG、COUNT)は終了です。