次の SQL の結果は?(score は 10, 20, NULL の 3 行)
SELECT SUM(score) AS s, AVG(score) AS a FROM t;正答
- 30, 10
- NULL, NULL
- 0, 0
- 30, 15
解説
集計関数は NULL の行を計算から除く。SUM は 10 + 20 = 30、AVG は NULL を除いた 2 件の平均で 15 になる。選択肢 1 の 30, 10 は NULL を 0 とみなして 3 で割った誤りで、NULL を 0 扱いしたいなら COALESCE(score, 0) を明示する必要がある。選択肢 2 のように 1 つでも NULL があれば全体が NULL になることはない。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ