ある電子商取引サイトでは、会員の属性を柔軟に変更できるように、“会員項目”表で管理することにした。
“会員項目”表に対し、次の条件で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文の集合関数
【キーワードの解説 】
SQL文の集合関数
SQL文の集合関数にはSUM(総和)、MAX(最大値)、MIN(最小値)、AVG(平均値)、COUNT(総数)があり、引数に指定したカラムの値を集計し結果を返します。
WHERE条件が指定されている場合は、抽出されたレコードを対象に集計した結果を返します。
もっと、「SQL 集合関数」について調べてみよう。
戻る
一覧へ
次へ