HAVING の位置が誤っている。正しく直して書いてください。
SELECT dept, COUNT(*) AS n FROM emp HAVING n >= 2 GROUP BY dept;正答
正答
SELECT dept, COUNT(*) AS n FROM emp GROUP BY dept HAVING n >= 2;次も正解: SELECT dept, COUNT(*) AS n FROM emp GROUP BY dept HAVING COUNT(*) >= 2;(空白の有無・大文字小文字・末尾のセミコロンは問いません)
解説
HAVING はグループ化した後の集計結果を絞る句なので、GROUP BY dept の後ろに書く。HAVING を GROUP BY より前に置くと、SQLite は GROUP BY の位置で構文エラーを返す。SQLite では HAVING の中で SELECT の別名 n を参照できるので HAVING n >= 2 のままでよく、HAVING COUNT(*) >= 2 と書き直しても同じ結果になる。WHERE n >= 2 にすると集計前の行に条件を付けることになり誤り。
参考: www.sqlite.org
この問題を含む SQL のテストを制限時間つきで解く
SQLクイズへ