HAVINGによる集計後の絞り込み
表 sales(図)に対して、次のSQLを実行した結果として正しいものを1つ選べ。
SELECT store, SUM(amount) FROM sales GROUP BY store HAVING SUM(amount) >= 250;

- A
C(300)の1行
- B
A(300)、B(220)、C(300)の3行
- C
A(300)と C(300)の2行
- D
B(220)の1行
正解と解説を見る
正解:C
GROUP BY で店ごとにまとめると合計は A = 300、B = 220、C = 300 で、HAVING SUM(amount) >= 250 はまとめた後の合計で絞るので A と C が残る。行を集計前に絞る WHERE と、集計後に絞る HAVING を取り違えやすい。
| store | 合計 | HAVING SUM >= 250 |
|---|---|---|
| A | 300 | 残る |
| B | 220 | 除かれる |
| C | 300 | 残る |
- A
誤り。行ごとに amount >= 250 で絞ってから集計した(WHERE で絞った)場合の結果。
- B
誤り。HAVING の条件を無視して、全店の合計を返している。
- C
正しい。店ごとの合計は A = 300、B = 220、C = 300。HAVING はまとめた後の合計で絞るので、250以上の A と C が残る。
- D
誤り。条件を「250未満」と逆に読んだ場合の結果。
このサイトの問題は、各試験の公開されている出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人データサイエンティスト協会・一般財団法人統計質保証推進協会の公式サービスではありません。