新・SQL入門編16ドリルのサムネイル
クロス集計表を作ってみよう 2 MySQL編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

注文内容が ordered_menu テーブルに保存されています。
ordered_menu テーブルの形式は次の通りです。

#カラム名データ型内容
1ordered_id整数 (int)注文の通し番号
2menu_id整数 (int)メニュー番号
3num整数 (int)メニューの注文数
4sum整数 (int)小計


メニュー番号を行に、メニューの注文数を列に持つクロス集計表で注文の件数を集計してください。メニューの注文数は1~4の整数です。

ヒント



  • CASE WHEN 条件 THEN 値 END:条件に応じてカラムの値を変えることができる
  • WHEN 条件 THEN 値の句は同じCASE式内に複数書くことができる
  • WHEN句の後にELSE 値と続けることで、それまでの条件に合わなかった場合の値を設定できる


  • ordered_menu内に必要なカラムがすべて含まれているため、サブクエリでテーブルを作る必要はありません。
  • CASE式を利用して列持ちでの集計を行います。それぞれのCASE式について、条件を満たしている場合は1、そうでない場合は0に設定すればよいです。

入力例1
ordered_menu テーブル
ordered_idmenu_idnumsum
1141200
2211250
381350
............
出力例1
menu_id num=1 num=2 num=3 num=4
14 21 15 0 0
21 17 18 1 0
8 26 16 0 0
...

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. 新・SQL入門編16ドリル(言語選択)
  4. 問題一覧 MySQL編
  5. クロス集計表を作ってみよう 2 MySQL編
ページの先頭へ戻る