2月17日(金)1、2コマ目

今日、やったこと

SQLのおさらい 練習問題解説

今日のホワイトボード

CS_売上データテーブル

CS_グループマスタやCS_商品マスタのようなxxxマスタテーブルは頻繁にデータが更新されることはない。また、別テーブルから参照されることが多い。

CS_売上データテーブルは1件の売上が発生すると、データが登録される。

イベントごとに更新されるテーブル。

 

図 CS_売上データテーブル

問1

特にややこしいことはないかと。

図 問1 ヒント
並び替えのorder byですが、
①売上IDの昇順で並び替え
②売上IDが同じ行を数量*価格の降順でさらに並び替え
です。
図 売上IDだけで並び替え

図 売上IDの昇順で並び替え、さらに売上金額降順で並び替え

問2

図 問2 ヒント
グループ化なしでグループ関数を使うと全行で1つのグループになる。
全売上での売上金額は以下のとおり。
図 問2 全売上での売上金額
今回ほしいのは売上IDが1、2、3の売上のみ。
売上IDが1、2、3の行だけに絞ればよいので、where句で条件指定。
図 問2 売上IDが1、2、3だけに絞り込む

問3

図 問3 ヒント
まず、各グループの売上金額を出力するSQLは以下のとおり。
図 問3 全グループの売上金額
条件「売上金額が18000以上」はグループに対する条件。よって、having句で指定。
図 問3 グループ毎の売上金額が18000以上
問題の実行結果には「売上数量」の出力がありませんでした。
図 問3 正解例

問4

図 問4 ヒント
group byのグループ化より前にwhere句で条件に合致するかチェックする。
where句で売上IDが1、2、3の行だけにし、そのあとグループする。
図 問4 正解例

問5

いやらしいといえばいやらしいですが、問題文のなかにxxx毎やxxx別、各xxxのようなグループ化のキーワードがありませんが、グループ化必要です。
図 問5 ヒント

図 問5 正解例


問6

商品ID、商品名を出力したい。 => 商品ID、商品名でグループ化
グループ化すると、select句に指定できるのは
  • group by句に指定した列名
  • グループ関数
のみ可
図 問6 ヒント

図 問6 正解例

問7

あいまい検索。
あいまい検索の演算子はlike
DBによっては=でも動くものもあるが、likeを使うこと。
図 問7 ヒント

図 問7 正解例

問8

「ただし、売上数量が10以上の商品」が
数量列が10以上 => 行に対する条件 
商品ごとの数量の総和が10以上 => グループに対する条件
の2とおり考えられる。
問題では、「ただし、・・」の前に商品ごとの売上金額を出力とあるので、「ただし、・・」以降は商品ごとの売上数量と考えるのが自然。
図 問8 ヒント


図 問8 正解例

次回は

「SQLおさらい」の問9、問10の解説のあと、Web+DBの確認テストをします。

このブログの人気の投稿

10月3日(木)1コマ目

10月27日(木)1コマ目

10月14日(金)1、2コマ目