指摘・レビュー4 択難易度 標準

部署ごとの人数を出したい。このSQLへの指摘として正しいものは?

SELECT dept, COUNT(*) FROM employees;

正答

  1. COUNT(*) は COUNT(id) のように列名を書かないと行数を数えられない
  2. dept に AS で別名を付けないとエラーになる
  3. GROUP BY dept が無いので、部署ごとではなく全体で 1 行になる
  4. FROM の前にカンマが必要

解説

集計関数は GROUP BY で指定したグループごとに計算される。GROUP BY が無いと表全体が 1 グループになり、全社の人数が 1 行だけ返る。SQLite ではこのまま実行でき dept には任意の 1 行の値が入るが、多くの DB ではエラーになる。COUNT(*) は行数を数える正しい書き方なので 1 番目の指摘は誤り。

参考: www.sqlite.org

sqlgroup-byaggregate

この問題を含む 指摘・レビュー のテストを制限時間つきで解く

指摘・レビュークイズへ