“社員”表に対して次のSQL文を実行した結果として、正しいものはどれか。
SELECT DISTINCT S1.生年 FROM 社員 AS S1, 社員 AS S2
WHERE S1.生年 >= S2.生年
GROUP BY S1.生年
HAVING COUNT(*) <= 3
社員
社員番号 |
社員名 |
生年 |
00001 |
織田 信夫 |
1943 |
00002 |
武田 信二 |
1968 |
00003 |
柴田 勝男 |
1970 |
00004 |
浅井 長吉 |
1943 |
00005 |
三浦 一郎 |
1953 |
00006 |
今川 義一 |
1954 |
00007 |
羽柴 吉秀 |
1962 |
00008 |
毛利 輝夫 |
1975 |
00009 |
伊達 正雄 |
1961 |
00010 |
細川 太郎 |
1957 |
|
答え 正解なし
【解説】
問題のSQL文は「社員の表で同じ生年の人が3人未満で、他の任意の社員より生年が等しいか大きいものを出力する」という意味です。
これを行うと、
- “1943”は2人で、“1943”と同じデータ(“1943”)があるので出力されます。
(S1とS2が同じデータであっても問題ありません)
- “1968”は1人で、“1968”より小さいデータ(“1943”)があるので出力されます。
- “1970”は1人で、“1970”より小さいデータ(“1943”)があるので出力されます。
- “1953”は1人で、“1953”より小さいデータ(“1943”)があるので出力されます。
- “1954”は1人で、“1954”より小さいデータ(“1943”)があるので出力されます。
- “1962”は1人で、“1962”より小さいデータ(“1943”)があるので出力されます。
- “1975”は1人で、“1975”より小さいデータ(“1943”)があるので出力されます。
- “1961”は1人で、“1961”より小さいデータ(“1943”)があるので出力されます。
- “1957”は1人で、“1957”より小さいデータ(“1943”)があるので出力されます。
結果の表は
生年 |
1943 |
1968 |
1970 |
1953 |
1954 |
1962 |
1975 |
1961 |
1957 |
になります。(正解無し)
【キーワード】
・SQL文
【キーワードの解説】
- SQL文
SQL文で出てくる句について説明します。
- SELECT
出力するデータを指定します。
- DISTINCT
同じ内容の(重複した)データを除きます。
- FROM
操作するデータを指定します。
- AS
操作するデータの名前を変えます。
- WHERE
操作する条件を指定します。
- GROUP BY
同じ内容のデータをまとめます。
- HAVING
GROUP BYで抽出条件を指定する。
- COUNT
個数を数えます。
- SUM
集計(加算)します。
- AVG
平均値を計算します。
もっと、「SQL文」について調べてみよう。
戻る
一覧へ
次へ
|