本文へスキップ
Certia
未分類
春期

データベーススペシャリスト 2019年 春期 問14

14 / 25

ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、“会員項目” 表で管理することにした。 “会員項目”表に対し、次の条件で SQL文を実行して結 果を得る場合、SQL 文のaに入れる字句はどれか。ここで、実線の下線は主キーを、 NULL は値がないことを表す。 〔条件〕 (1)同一“会員番号”をもつ複数の行によって、一人の会員の属性を表す。 (2)新規に追加する行の行番号は、最後に追加された行の行番号に1を加えた値と する。 (3)同一“会員番号”で同一“項目名”の行が複数ある場合、より大きい行番号の 項目値を採用する。 会員項目 〔結果〕 行番号 会員番号 項目名 項目値 会員番号 会員名 最終購入年月日 会員名 情報太郎 情報太郎 2019-02-05 2019-02-01 最終購入年月日 2019-02-05 情報花子 情報花子 情報次郎 NULL 会員名 2019-01-30 最終購入年月日 最終購入年月日 2019-02-01 会員名 情報次郎 [SQL 文] SELECT 会員番号、 (CASE WHEN 項目名=会員名”THEN項目値END)AS 会員名、 a (CASE WHEN 項目名=”最終購入年月日”THEN 項目値END) a AS 最終購入年月日 FROM (SELECT 会員番号、項目名、項目値 FROM 会員項目 WHERE 行番号 IN ( SELECT L (行番号)FROM 会員項目 GROUP BY 会員番号、項目名 ) ) T GROUP BY 会員番号 ORDER BY 会員番号

問題の図

正解と解説

表示する
正解 ウ

MAX

同一会員番号・項目名で複数行ある場合、より大きい行番号を採用するため副問合せでMAX(行番号)を取る。外側ではCASEで項目名ごとに値を取り出しGROUP BYで1行に集約するので、集約関数MAXでNULLでない値を拾う。よってaにはMAXが入る。

AI に聞く

AI のボタンを押すと、問題文と解答を入れたプロンプトをコピーしてから各サービスを開きます。入力欄に自動で入らない場合は貼り付けてください。