SQL4 択難易度 基礎

部署ごとの人数を出したい。正しく直したものは?

SELECT dept, COUNT(*) AS n FROM emp ORDER BY dept;

正答

  1. SELECT dept, COUNT(*) AS n FROM emp GROUP BY dept ORDER BY dept;
  2. SELECT DISTINCT dept, COUNT(*) AS n FROM emp ORDER BY dept;
  3. SELECT dept, COUNT(*) AS n FROM emp ORDER BY dept GROUP BY dept;
  4. SELECT dept, COUNT(dept) AS n FROM emp WHERE dept IS NOT NULL ORDER BY dept;

解説

COUNT(*) を GROUP BY 無しで使うと表全体が 1 グループになり、全体の件数 1 行しか返らない。部署ごとに数えるには GROUP BY dept で部署単位にまとめる。選択肢 2 は DISTINCT を付けても集計のグループは分かれず 1 行のまま。選択肢 3 は GROUP BY を ORDER BY の後ろに書いており構文エラー。選択肢 4 は NULL を除くだけで全体の 1 行しか返らない。

参考: www.sqlite.org

group-bycount

この問題を含む SQL のテストを制限時間つきで解く

SQLクイズへ