- トップページ
- データベーススペシャリスト
- 平成23年度特別問題一覧
- 平成23年度特別問題11-解答・解説-分析
平成23年度特別問題
問題11
“社員”表から、男女それぞれの最年長社員を除くすべての社員を取り出すSQL文とするために、aに入る副問合せはどれか。 ここで、“社員”表は次の構造とし、下線部は主キーを表す。
社員(社員番号, 社員名, 性別, 生年月日)
ア | SELECT MIN(生年月日) FROM 社員 AS S2 GROUP BY S2.性別 |
イ | SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.生年月日 > S2.生年月日 OR S1.性別=S2.性別 |
ウ | SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別=S2.性別 |
エ | SELECT MIN(生年月日) FROM 社員 GROUP BY S2.性別 |
“社員”表から、男女それぞれの最年長社員を除くすべての社員を取り出すSQL文とするために、aに入る副問合せはどれか。 ここで、“社員”表は次の構造とし、下線部は主キーを表す。
社員(社員番号, 社員名, 性別, 生年月日)
ア | SELECT MIN(生年月日) FROM 社員 AS S2 GROUP BY S2.性別 |
イ | SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.生年月日 > S2.生年月日 OR S1.性別=S2.性別 |
ウ | SELECT MIN(生年月日) FROM 社員 AS S2 WHERE S1.性別=S2.性別 |
エ | SELECT MIN(生年月日) FROM 社員 GROUP BY S2.性別 |
解答:ウ
<解説>
ア | × | サブクエリの中でグループ化を実行すると、照合する値として複数の行(2行)が返されてしまうのでエラーとなる。 |
イ | × | 外部クエリ(サブクエリの外側のSQL文)とサブクエリの行を結ぶ条件が設定されており、相関サブクエリとして機能する。しかし、「S1.性別 = S2.性別」という性別のほかに「S1.生年月日 > WHERE S2.生年月日」という条件も設定されている。この条件により、性別ごとの最年長社員ではなく、単純に全社員のうちの最年長社員の生年月日と比較されて しまう。 |
ウ | ○ | 外部クエリ(サブクエリの外側のSQL文)とサブクエリの行を結ぶ条件が設定されており、相関サブクエリとして機能する。外部クエリとサブクエリの関連付けは「S1.性別 = S2.性別」と、性別のみを照合する条件になっているので、性別ごとに最年長社員の生年月日を取得できる。 |
エ | × | サブクエリの中でグループ化を実行すると、照合する値として複数の行(2行)が返されてしまうのでエラーとなる。 |
お問い合わせ