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句に書いてはいけないことを書いているんです。
だから実行しようとしてもエラーになります。
アとエは違うと分かる。
上記でウは違うと分かる。多分。
残るはイだけ。だから正解。
まず、ウについてです。
実行結果を求められていますが、そもそもウは実行できません。
ウは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