平成24年度 春期 午前Ⅱ 問11
データ操作
副問合せに関する問題
“社員”表と“プロジェクト”表に対して,次の SQL 文を実行した結果はどれか。
SELECT プロジェクト番号, 社員番号 FROM プロジェクト
WHERE 社員番号 IN
(SELECT 社員番号 FROM 社員 WHERE 部門 <= '2000')
社員
| 社員番号 | 部門 | 社員名 |
|---|---|---|
| 11111 | 1000 | 佐藤一郎 |
| 22222 | 2000 | 田中太郎 |
| 33333 | 3000 | 鈴木次郎 |
| 44444 | 3000 | 高橋美子 |
| 55555 | 4000 | 渡辺三郎 |
プロジェクト
| プロジェクト番号 | 社員番号 |
|---|---|
| P001 | 11111 |
| P001 | 22222 |
| P002 | 33333 |
| P002 | 44444 |
| P003 | 55555 |
選択肢は原典では列 プロジェクト番号,社員番号 の表。各肢は行を上から順に「/」で区切って書いた。
- アP001,11111 / P001,22222
- イP001,22222 / P002,33333
- ウP002,33333 / P002,44444
- エP002,44444 / P003,55555
答えと解説を見る
✓ これが正解アP001,11111 / P001,22222
解説
部門が2000以下の社員11111と22222の、P001 の2行が返ります。
まず副問合せを評価します。“社員”表で部門 <= '2000' を満たすのは、部門1000の11111と部門2000の22222の二人です。部門は文字列として比べていますが、どれも同じ桁数の数字なので、数の大小と同じ結果になります。次に、外側の問合せで“プロジェクト”表から社員番号がこの二つのどちらかに一致する行を取り出すと、(P001,11111) と (P001,22222) の2行です。33333以降の社員は部門3000や4000で、副問合せの結果に含まれません。IN を使った副問合せは、内側の結果を値の一覧に置き換えてから外側を読む、と2段に分けて追うと確実です。
ほかの選択肢はなぜ違うのか
- イP001,22222 / P002,33…:33333 の社員の部門は3000で、副問合せの条件を満たしません。(P001,22222) は正しい行ですが、(P002,33333) が混じっているので結果になりません。
- ウP002,33333 / P002,44…:33333 と 44444 はどちらも部門3000で、副問合せの条件を満たしません。条件の向きを逆にして2000より大きい部門を選んだ場合の行の一部です。
- エP002,44444 / P003,55…:44444 は部門3000、55555 は部門4000で、副問合せの条件を満たしません。どちらも2000より大きい部門の社員なので、IN で照合する値の一覧に入りません。
この問題の用語
- プロジェクトある目的のために期間を決めて行う、一回限りの活動。決算処理のように同じ手順を繰り返す定常業務とは区別されます。
- 部門組織の中で、仕事の種類や担当ごとに分けられたまとまりです。専門ごとに分ける分け方と、製品や地域ごとに分ける分け方があります。
出典:平成24年度 春期 データベーススペシャリスト試験 午前Ⅱ 問11
同じ用語が出る問題
- 令和2年度 10月 午前Ⅱ 問25:ユースケース駆動開発の利点(プロジェクト)
- 平成26年度 春期 午前Ⅱ 問18:データマイニングに関する説明(部門)
- 平成25年度 春期 午前Ⅱ 問5:集約関数に関する問題(部門)
- 平成21年度 春期 午前Ⅱ 問9:集約関数に関する問題(部門)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)