グループ関数は行のグループに対して、一つの結果を戻す。

     グループ関数はNULLを無視する。(「*」を使用する場合を除く)

     COUNT ( DISTINCT 列名)は列にNULL値を行や重複する値を除いた行を返す。

     SELECT句の中でグループ関数とグループ関数以外の列を一緒に指定する場合、必ずグループ関数以外の列をGROUP BY句で指定が必要。(GROUP BY句で指定されていない列は、SELECT句でグループ関数と一緒に使用できない。)

例: SELECT 列1, AVG(SAL) FROM 表名 GROUP BY 列1

 

     GROUP BY句で指定している書式と、SELECT句やORDER BY句で指定している書式が異なる場合、エラーになる。(SELECT句とORDER BY句の間でその関係はない)

     GROUP BY句で指定されていない列をORDER BY 句では使用できない。

     SELECT句最後のORDER BY句にはGROUP BY句で指定した列か、グループ関数しか指定できない。

     複数列でグループ化した場合、列の指定順序はどちらでも構わない。(結果として同じグループをつくる)

     主問い合わせの条件式にグループ関数が使用されている場合、WHERE句ではなくHAVING句が必要。

     HAVING句内ではグループ関数のネストは使用できない。

     HAVING句の副問い合わせの中ではGROUP BY句を指定すればグループ関数のネストが可能。(グループ関数のネストはGROUP BY句が指定されているSELECT句のみ使用可能)

     HAVING句の条件式ではグループ関数を使用した集計値と、GROUP BY句で指定された列のみが使用できる。

     グループ関数の引数として単一行関数を使用できる。

 

グループ関数

使用可

使用不可

SELECT

WHERE

HAVING

GROUP BY

ORDER BY

 

CASE