平成31年 春期 データベーススペシャリスト 午前II 問14

ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、“会員項目”表で管理することにした。
“会員項目”表に対し、次の条件でSQL文を実行して結果を得る場合、SQL文のaに入れる字句はどれか。
ここで、実線の下線は主キーを、NULLは値がないことを表す。

[条件]
 (1)  同一“会員番号”を持つ複数の行によって、一人の会員の属性を表す。
 (2)  新規に追加する行の番号は、最後に追加された行の行番号に1を加えた値とする。
 (3)  同一“会員番号”で同一“項目名”の行が複数ある場合、より大きい行番号の項目値を採用する。

会員項目
行番号 会員番号 項目名 項目値
1 0111 会員名 情報太郎
2 0111 最終購入年月日 2019-02-05
3 0112 会員名 情報花子
4 0112 最終購入年月日 2019-01-30
5 0112 最終購入年月日 2019-02-01
6 0113 会員名 情報次郎

[SQL文]
 SELECT 会員番号,
     a   (CASE WHEN 項目名 = ‘会員名’ THEN 項目値 END) AS 会員名
     a   (CASE WHEN 項目名 = ‘最終購入年月日’ THEN 項目値 END)
      AS 最終購入年月日
   FROM ( SELECT 会員番号, 項目名, 項目値 FROM 会員項目
        WHERE 行番号 IN ( SELECT   a   (行番号) FROM 会員項目
                   GROUP BY 会員番号, 項目名 )


 ア  COUNT
 イ  DISTINCT
 ウ  MAX
 エ  MIN


答え ウ


解説
条件の(3)に「同一“会員番号”で同一“項目名”の行が複数ある場合、より大きい行番号の項目値を採用する」とあるのでaに入るのは同一“会員番号”で同一“項目名”のときに項目値の最大を返すMAX(ウ)になります。


キーワード
・SQL文の集合関数

キーワードの解説

戻る 一覧へ 次へ