平成18年 春期 ソフトウェア開発技術者 午前 問67

“社員”表に対して次の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

 ア
生年
1953
1943
 イ
生年
1953
1943
1943
 ウ
生年
1954
1954
1943
 エ
生年
1975
1970
1968


答え 正解なし


解説
問題の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文」について調べてみよう。

戻る 一覧へ 次へ