| スカラー |
|---|
| NULLでない入力値の個数。COUNT(*)はすべての行を数えます。 | SELECT COUNT(*) FROM orders |
| NULLでない数値の合計。空の集合ではNULLを返します。 | SELECT SUM(total) FROM orders |
| NULLでない数値の相加平均。NULL入力は無視されます。 | SELECT AVG(total) FROM orders |
| 比較可能な任意の型におけるNULLでない最小値。 | SELECT MIN(total) FROM orders |
| 比較可能な任意の型におけるNULLでない最大値。 | SELECT MAX(total) FROM orders |
| グループ化 |
|---|
| 入力行をキーで分割し、集計は分割ごとに実行されます。 | SELECT user_id, SUM(total) FROM orders GROUP BY user_id |
| 集計後にグループごとに評価される述語。集計にはWHEREの代わりに使います。 | SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5 |
| 1回のパスでグループごとに複数の集計を計算します。 | SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id |
| 1つの文で複数のグループ化を計算します。現在のセット外のキーはNULLを返します。 | SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ()) |
| 階層ベースのグルーピングセットの略記。小計と総合計を追加します。 | SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id) |
| 列挙したキーのすべての組み合わせをグルーピングセットとして生成する略記。 | SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id) |
| 通常のグループキーとグルーピングセットを1つの句で混ぜます。 | SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ()) |
| ソート順でキーごとに最初の行を保持します。Postgresの拡張です。 | SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC |
| Distinctと高度な集計 |
|---|
| 一意なNULLでない値の個数。先に重複を除去します。 | SELECT COUNT(DISTINCT user_id) FROM orders |
| 有限の誤差でdistinct値の個数を推定します。大規模入力向けです。 | SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders |
| NULLでない文字列を区切り文字で連結します。 | SELECT STRING_AGG(user_id::text, ',') FROM orders |
| NULLでない文字列を連結します。STRING_AGGのMySQLでの名前です。 | SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders |
| NULLでない入力値を配列に収集します。 | SELECT ARRAY_AGG(total) FROM orders |
| 入力行をJSON配列に収集します。JSONB形式は解析済みのバイナリを格納します。 | SELECT JSONB_AGG(user_id) FROM orders |
| すべて / いずれかのNULLでない入力値が真のときTRUE。 | SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders |
| BOOL_ANDの標準の別名。 | SELECT EVERY(total > 0) FROM orders |
| ソート済み入力上の補間 / 最近接順位のパーセンタイル。WITHIN GROUPが必要です。 | SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders |
| 最も頻出する入力値。Postgresでは順序集合集計です。 | SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders |
| 順序集合集計と仮想集合集計にソート順を渡します。 | SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders |
| 集計を条件を満たす行に限定します。 | SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders |
| 集計が値を連結・収集する前に並べ替えます。 | SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders |
| COUNT(*)とCOUNT(1)はすべての行を数え、COUNT(col)はNULL入力をスキップします。 | SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders |
| NULLでない数値の標本標準偏差。STDDEV_POPが母集団形式で、裸の名前の既定はエンジンごとに異なります。 | SELECT STDDEV(total) FROM orders |
| NULLでない数値の標本分散(STDDEVの2乗)。VAR_SAMPとVAR_POPが各形式を明示します。 | SELECT VARIANCE(total) FROM orders |