<テーマ:CASE式を用いたSQL文>
正解はこちら
解答:ウ
[基礎知識・用語のまとめ]
副問合せ・・・副問合せとはSQLの中に登場するSQLのことで、副次問合せ(サブクエリ)とも呼ばれます。
SQLで利用する情報をあらかじめ別のSQL拡張または絞り込みを行い、扱える情報の幅を広げます。
DISTINCT・・・DISTINCTとは、SQLコマンドの一つで、SELECT文にて出力した実行結果の重複レコードを1つにまとめることができます。ただし、基本的にこのコマンドで集約した集合に対して、関数操作を実行することはできません。
[解法]
SQL文を実行するとき[結果]を得るためには、FROM句の副問合せによって”会員項目”表の行番号1,2,3,5,6に該当する”会員番号”、”項目名”、”項目値”を得る必要があります。そのためには、副問い合わせの検索条件 WHERE句の行番号が1,2,3,5,6となるように空欄aに入れる字句を考えればよいことがわかります。
SELECT 【 a 】 (行番号) FROM 会員項目 GROUP BY 会員番号、項目名
ア→COUNT(行番号)は、グループ分けされた行番号の行数をカウントするので、SELECT句の出力は1,1,1,2,1となり、WHERE句の行番号は、1,2が得られるので、条件を満たしません。
イ→DISTHINCT(行番号)は、グループ分けされた行番号の重複行(行番号4,5の5行目)を除くので、SELECT句の出力は1,2,3,4,6となり、WHERE句の行番号も同様となり、条件を満たしません。
ウ→MAX(行番号)は、グループ分けされた行番号の最大値を選択するので、SELECT句の出力は1,2,3,5,6となるため、WHERE句の行番号も同様となり、条件を満たします。
エ→MIN(行番号)は、グループ分けされた行番号の最小値を選択するので、SELECT句の出力は1,2,3,4,6となり、WHERE句の行番号も同様となり、条件を満たしません。
したがって、正解の選択肢は「ウ」となります。
[参考]
空欄aにMAXを使用するにあたり、MAX(CASE WHEN…)については、最大値を選択するためでなく、GROUP BY句に指定された”会員番号”以外にSELECT句で指定する列には集合関数が必要であるから、、、らしい。
利用させていただきました素材へのリンク
うさちゃこちゃんねる様 https://www.youtube.com/channel/UCQcDdg4W6r5OfcB1JTcpABw
コメント