データベースの基礎
売上表(店舗, 金額)に、(A, 500)、(A, 700)、(B, 300)、(B, 400)、(C, 1200)、(D, 200)、(D, 900) の7行がある。SELECT 店舗, SUM(金額) FROM 売上 GROUP BY 店舗 HAVING SUM(金額) >= 1000 の結果は何行になるか。
- A1行
- B3行
- C4行
答えと解説を見る
正解:B. 3行
GROUP BY 店舗 で店舗ごとにまとめると、合計はAが 500 + 700 = 1200、Bが 300 + 400 = 700、Cが1200、Dが 200 + 900 = 1100 の4グループになります。HAVING SUM(金額) >= 1000 で合計が1000以上のグループだけを残すので、A、C、Dの3行が結果になります。1行は、WHERE 金額 >= 1000 のように、グループにまとめる前の1行ずつの金額で選んだ場合の結果(Cだけ)です。4行は、HAVINGを付けないときのグループの数です。
- A. 1行ずつの金額が1000以上の行だけを選んだ場合(WHEREで絞った場合)の結果です。
- B. 正しい。合計が1000以上になるA(1200)、C(1200)、D(1100)の3行です。
- C. HAVINGで絞る前のグループの数です。合計が700のBは除かれます。