第6章 グループ関数とデータの集計

■COUNT関数

COUNT(*)
“COUNT(式)
またはCOUNT(ALL 式)”
COUNT(DISTINCT 式)

■LISTAGG関数

連結した結果を戻す関数

LISTAGG(連結して表示する列名)
WITHIN GROUP(ORDER BY ソート列名 [DESC])

■GROUP BY 句によるデータのグループ化
SELECT文の列リストにグループ関数がある場合は、GROUP BY句にグループ関数ではない列名は、全て記載する必要がある。

WITHIN GROUP

■重要
GROUP BY句を指定すると、行をグループ化できる。
GROUP BY句は、WHERE句の後ろ、かつORDER BY句の前に指定する。
GROUP BY句に列別名は指定できない。
SELECT句の選択リストには、GROUP BY句で指定した列とグループ関数のみ指定できる。
ORDER BY句には、GROUP BY句で指定した列とグループ関数のみ指定できる。
グループ関数は、最大2レベルまでネストできる。
GROUP BY句に指定した列をSELECT句のリストに指定しなくても、エラーにはならない。

WHERE句では、グループ関数を使うことはできない。
SELECT句の中でグループ関数と一緒に個々の列(または式)を指定する場合、その列(または式)をGROUP BY句で指定する必要がある。
例)
SELECT DEPTNO, AVG(SAL) FROM EMP;
上記はエラーと成る。GROUP BY句でDEPTNOを指定しなければならない。
GROUP BY句では、グループ関数を使えない。使うとエラーと成る。
GROUP BY句では、列別名を使用できない。ORDER BY句では、列別名を使用できる。

RPAD関数は、単一行関数の文字関数である。

■COUNT関数
COUNT(*)は、NULL地を含む全行数を戻す。
COUNT(ALL 列名)、COUNT(列名)は、NULL地を除く行数を戻す。

COUNT(DISTINCT 列名)は、NULL値を除き、重複値は1つに集約して件数を出す。

日付の大小は、古い日付から新しい日付に向かって、小から大となっていく。
MIN(日付)は、最も古い日付を出す。
MAX(日付)は、もとTも新しい日付を出す。

MAX(文字列)の場合は、A<Zとなる。
MIN(文字列)の場合は、A<Zとなる。

■LISTAGGグループ関数
LISTAGGグループ関数は、指定されたメジャー列について、ORDER BY句の指定の順序で、メジャー列の値を結合する。
結合する、連結する、リストするとも表現する。

あわせて読みたい