HOME»基本情報技術者試験掲示板»平成29年度 SQLについて
投稿する

平成29年度 SQLについて [1735]

 ななしさんさん(No.1) 
平成29年度 午後の問三のSQLの設問1について質問です。設問1で問われている内容は GROUP BYの使う位置について問われていると思います。ただ何故なぜイのみが正解で、ウが違うのかわかりません。アとエはあからさまにおかしいので違うのは分かりました。それぞれの実行結果と共に説明お願いします。
2019.04.16 23:18
 ななしさんさん(No.2) 
追記
すみません。秋期です。
2019.04.16 23:19
午後試験から逃亡さん(No.3) 
イとウの違いについてですね。
まず、ウについてです。
実行結果を求められていますが、そもそもウは実行できません。
ウはSQL文のルールを守っていないからです。
エラーになり、「SQL文を修正しろ」とエラーメッセージが流れます。

管理人の解説を引用します。次のとおりです。


HAVING句で参照される列はグループ化列または集計関数でなければなりません。このSQL文では、
商品表.分類 = 'コーヒー'
の部分で、グループ化されていない列を条件式に使用しているので誤りです。

上記の解説文が指しているのはウの三行目である次の部分です。
HAVING 商品表.分類 = 'コーヒー'

管理人さんが「HAVING句で参照される列はグループ化列または集計関数でなければなりません。」と言ってますね。
HAVING句とはウの「HAVING 商品表.分類 = 'コーヒー' ……[略]……」のことです。
次にグループ化列とはGROUP BYでグループごとにまとめられている部分のことです。
ウでいうと「GROUP BY 販売表.会員番号」のことですね。
ウでは会員番号ごとにグループ化されています。
次に集約関数とはウで使用されている「SUM()」や「COUNT()」のことですね。
SUM関数は合計値の計算を、COUNT関数は数を数えてくれます。

つまり、HAVING句には会員番号のグループについてか、SUMやCOUNTの集約関数についてしか書いてはいけないということです。

では、上記で引用した「HAVING 商品表.分類 = 'コーヒー'」はどちらに当てはまるのでしょうか。
会員番号でしょうか? SUMやCOUNTでしょうか?

どちらも違います。つまり、HAVING句に書いてはいけないことを書いているんです。
だから実行しようとしてもエラーになります。

アとエは違うと分かる。
上記でウは違うと分かる。多分。
残るはイだけ。だから正解。
2019.04.17 00:29
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop