集約関数

更新日:

用語解説

集約関数は、複数行の値を一つの集計値へまとめるSQL関数です。代表例はCOUNT、SUM、AVG、MAX、MINで、表全体又はGROUP BYで分けた各グループに対して計算します。

■ 試験で押さえるポイント

  • COUNT(*)は行数を数え、COUNT(列)はその列がNULLでない行数、COUNT(DISTINCT 列)はNULLを除く異なる値の数を数えます。三者の結果は同じとは限りません。

  • SUM(列)とAVG(列)はNULLを除外し、AVGは非NULL値の合計非NULL値の件数\dfrac{\text{非NULL値の合計}}{\text{非NULL値の件数}}です。NULLを0として分母へ含めるわけではありません。

  • WHEREはグループ化前の行を絞り、HAVINGはGROUP BYと集約後のグループを絞ります。集約結果を条件に使う場合は通常HAVINGです。

  • 対象行が0件のときCOUNTは0を返しますが、SUMやAVGなどは通常NULLです。0件の合計を0として表示したい場合はCOALESCEなどで変換します。

■ 選択肢での判断ポイント

NULLを含む表でCOUNT(*)、COUNT(列)、AVGを実際に計算し、分母を確認します。集約前の条件か集約後の条件かでWHEREとHAVINGを選びます。

例: 得点が80、NULL、40の三行ならCOUNT()=3\operatorname{COUNT}(*)=3COUNT(得点)=2\operatorname{COUNT}(\text{得点})=2SUM(得点)=120\operatorname{SUM}(\text{得点})=120AVG(得点)=120÷2=60\operatorname{AVG}(\text{得点})=120\div2=60です。NULLを0点として120÷3=40120\div3=40にはしません。

音声で聞く

同じ分野の用語