平成18年春期試験問題 午前問67
問67解説へ
"社員"表に対して次のSQL文を実行した結果として,正しいものはどれか。

SELECT S1.生年 FROM 社員 AS S1, 社員 AS S2
WHERE S1.生年 >= S2.生年
GROUP BY S1.生年
HAVING COUNT(*) <= 4
ORDER BY S1.生年 DESC
WHERE S1.生年 >= S2.生年
GROUP BY S1.生年
HAVING COUNT(*) <= 4
ORDER BY S1.生年 DESC

広告
解説
設問のSQL文はWHWRE句で不等価結合を行っています。演算子が>=なので、"生年"の値が当該行の値以下の全ての行とそれぞれ結合されることになります。例えば、上から2行目は"生年"が1968なので、それ以上である社員番号00003/00008以外の8行と結合します(その行自身とも結合します)。
結合された表はS1.生年でグルーピングし、行数が4以下のグループが選択されます。生年月日で整列すると結合相手となる行の数は以下のようになります。
※本問は出題ミスで正解なしとなったため、問題が成立するように改題してあります。
結合された表はS1.生年でグルーピングし、行数が4以下のグループが選択されます。生年月日で整列すると結合相手となる行の数は以下のようになります。
- 1943 4行(2行×2行)
- 1953 3行
- 1954 4行
- 1957 5行
- 1961 6行
- 1962 7行
- 1968 8行
- 1970 9行
- 1975 10行
※本問は出題ミスで正解なしとなったため、問題が成立するように改題してあります。
広告