COUNT / SUM / AVG / MIN / MAX の使い方
集計する
書き方
COUNT(*) COUNT(列) COUNT(DISTINCT 列) SUM(列) AVG(列) MIN(列) MAX(列)
COUNT(*) は行数、COUNT(列) は NULL でない値の数。集計関数は NULL を無視します。
よく使うオプション
| オプション | 意味 |
|---|---|
COUNT(*) | 行の数 |
COUNT(列) | その列が NULL でない行の数 |
SUM(列) / AVG(列) | 合計 / 平均 |
MIN(列) / MAX(列) | いちばん小さい値 / 大きい値 |
COUNT(DISTINCT 列) | 重ならない値の数 |
例
SELECT COUNT(*) FROM employees; count
-------
25
(1 row)社員が何人いるかを数えます。
SELECT SUM(total), AVG(total), MAX(total) FROM orders WHERE status = 'paid';
支払い済みの注文の、合計・平均・いちばん大きい金額を一度に出します。
SELECT MIN(hired_on), MAX(hired_on) FROM employees;
いちばん古い入社日と、いちばん新しい入社日を出します。日付や文字列にも使えます。
SELECT COUNT(*), COUNT(manager_id) FROM employees;
全員の数と、上司のいる社員の数です。COUNT(列) は NULL を数えません。
よくある間違い・注意
- 集計関数は NULL を飛ばします。AVG(列) は NULL の行を除いた平均なので、0 として数えたいときは AVG(COALESCE(列, 0)) にします。
- 1 行も無いとき、COUNT は 0 ですが、SUM や AVG は NULL になります。
- SELECT name, COUNT(*) FROM employees; のように、ふつうの列と集計を並べるには GROUP BY が要ります。
実際に打って練習する
SQL コースの Lv20「数えて合計する 集計関数」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。