令和3年度データベーススペシャリスト 午前Ⅱ問10

<テーマ: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  

ここまで読んでくれてありがとう!!
感謝!
感謝!

問題一覧へ

コメント