集約関数は複数の入力値から単一の結果を計算します。表9-37に組み込み集約関数を示します。集約関数の特殊な構文に関する考察は項4.2.7で説明されています。その他の入門的な情報については、項2.7を参照してください。
表 9-37. 集約関数
上記の関数は、count
関数を除き、1行も選択されなかった場合NULL値を返すことに注意してください。特に、行の選択がないsum
関数は、予想されるであろうゼロではなくNULLを返します。必要であれば、NULLをゼロと交換する目的でcoalesce
関数を使うことできます。
注意:
bool_and
、bool_or
論理集約関数は標準SQLの集約関数every
、any
またはsome
に対応します。any
とsome
についてですが、標準の構文には曖昧さがあるようです。SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;ここで、
ANY
は、副問い合わせの先頭とも、選択式が1行を返すとしたら集約関数とも取ることができます。したがって、標準ではこうした集約関数に名前がありません。
注意: 他のSQLデータベース管理システムでの作業に親しんだユーザは、
count
集約関数がテーブル全体に適用される場合の性能に驚かれるかも知れません。SELECT count(*) FROM sometable;のような問い合わせはテーブル全体を逐次スキャンを用いてPostgreSQLにより実行されます。