データベース
注文テーブルから「3件以上注文した顧客ID」を取得するSQL文として正しいものはどれか。(テーブル名: 注文, 列名: 顧客ID, 注文ID)
ア.SELECT 顧客ID FROM 注文 WHERE COUNT(注文ID) >= 3 GROUP BY 顧客ID
イ.SELECT 顧客ID FROM 注文 GROUP BY 顧客ID WHERE COUNT(*) >= 3
ウ.SELECT 顧客ID FROM 注文 GROUP BY 顧客ID HAVING COUNT(注文ID) > 3
エ.SELECT 顧客ID FROM 注文 GROUP BY 顧客ID HAVING COUNT(*) >= 3正解
解説
HAVINGは「グループに対するWHERE」。グループ化した後の集計結果に条件をかけるにはHAVINGを使う。
なぜ エ が正解か
GROUP BY 顧客ID でグループ化し、HAVING COUNT(*) >= 3 でそのグループの件数が3以上の顧客を絞り込む。COUNT(*)はNULLを含むすべての行を数えるので適切。
出典: AI生成問題(学習用)