部署ごとの人数を出したい。このSQLへの指摘として正しいものは?
SELECT dept, COUNT(*) FROM employees;正答
- COUNT(*) は COUNT(id) のように列名を書かないと行数を数えられない
- dept に AS で別名を付けないとエラーになる
- GROUP BY dept が無いので、部署ごとではなく全体で 1 行になる
- FROM の前にカンマが必要
解説
集計関数は GROUP BY で指定したグループごとに計算される。GROUP BY が無いと表全体が 1 グループになり、全社の人数が 1 行だけ返る。SQLite ではこのまま実行でき dept には任意の 1 行の値が入るが、多くの DB ではエラーになる。COUNT(*) は行数を数える正しい書き方なので 1 番目の指摘は誤り。
参考: www.sqlite.org
この問題を含む 指摘・レビュー のテストを制限時間つきで解く
指摘・レビュークイズへ