中小企業診断士 第1次試験 データベースとネットワーク・システム構成 練習問題 第2問: 次の表「売上」(金額の単位は万円)に対して、下のSQL文を実行した。 A:月4、金額30 A:月5、金額50 B:月4、金額20 B:月5、金額10 B:月6、
次の表「売上」(金額の単位は万円)に対して、下のSQL文を実行した。
| 店舗 | 月 | 金額 |
|---|---|---|
| A | 4 | 30 |
| A | 5 | 50 |
| B | 4 | 20 |
| B | 5 | 10 |
| B | 6 | 40 |
| C | 4 | 60 |
| D | 5 | 15 |
| D | 6 | 25 |
SELECT 店舗, SUM(金額) FROM 売上 WHERE 金額 >= 20 GROUP BY 店舗 HAVING SUM(金額) >= 60 返る結果として、最も適切なものはどれか。
解答と解説を先に見る
先に見ると、この問題は今回は育ちません。
正解: 5. A 80、B 60、C 60 の3行
「A 80、B 60、C 60 の3行」が適切です。SQL 文は、まず WHERE で集計の前の行を選び、次に GROUP BY で店舗ごとのグループにまとめて SUM(金額) で合計し、最後に HAVING で集計した後のグループを選びます。
WHERE 金額 >= 20 で、金額が20未満の B の10と D の15の行が外れます。残った行を店舗ごとに合計すると、A は30+50=80、B は20+40=60、C は60、D は25 です。
HAVING SUM(金額) >= 60 で、合計が60以上の A・B・C の3行が返ります。「A 80、B 70、C 60 の3行」は、WHERE を当てずに元の行をすべて合計したもので、B に10の行が入っています。
「A 80、B 60、C 60、D 25 の4行」は、WHERE は当てたものの、HAVING の条件を当てていません。「A 80、B 70、C 60、D 40 の4行」は、WHERE も HAVING も当てずに全店舗の合計を並べたものです。
「C 60 の1行」は、HAVING の条件を集計の前の1行ずつに当てた結果で、1行で60以上なのは C の行だけです。WHERE は集計の前の行を、HAVING は集計の後のグループを選ぶ、という順番を押さえましょう。
関連キーワード: SQL・GROUP BY・HAVING・集約関数
2026年度版 みんなが欲しかった! 中小企業診断士の教科書 (下) 経済学・経済政策、経営情報システム、経営法務、中小企業経営・中小企業政策
Amazon でテキストを見る模試 (25問)
この問題が解けたら、本試験はどうですか?本番形式で、ほかの科目もまとめて確かめる
本番形式の模擬試験で実力チェックPremium (月980円)Premium (ご利用中)制限時間 1時間