1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 新・SQL入門編03ドリル(言語選択)
  4. 問題一覧 MySQL編
  5. ゲームの勝敗を調べよう

新・SQL入門編03ドリルのサムネイル
ゲームの勝敗を調べよう (paizaランク C 相当)

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

問題

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

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

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


メニューが menu テーブルに保存されています。
menu テーブルの形式は次の通りです。
#カラム名データ型内容
1menu_id整数 (int)メニュー番号
2category_id整数 (int)カテゴリ番号
3name文字列 (varchar)メニュー名
4price整数 (int)価格


従業員どうしで次のルールのゲームをします。
【 ルール 】
・4 人制
・それぞれがメニューを 1 つ選ぶ
・注文内容のなかで 4 人が選んだメニューのみにおける小計 TOP10 に、最も出現するメニューを選んでいた人の勝ち
 ・TOP10 は、小計の次に注文時刻の早さを優先して集計し、上位 10 件のみ発表する
 ・出現回数が同じ人どうしは引き分け

このとき、勝者を発表するために、4 人が選んだ次のメニューについて、小計の TOP10 をすべて取得してください。4 人が選んだメニューは次の通りです。
・A: フライドポテトM
・B: ホットティー
・C: ハンバーガー
・D: コーンサラダ

4 人が選んだメニューについての情報は次の通りです。
SELECT id, name FROM menu WHERE name IN ("フライドポテトM", "ホットティー", "ハンバーガー", "コーンサラダ");
id name
1 ハンバーガー
11 フライドポテトM
15 コーンサラダ
25 ホットティー


回答形式


ordered_id     menu_id     num     sum
ordered_id_01 menu_id_01 num_01 sum_01
...
ordered_id_10 menu_id_10 num_10 sum_10


※ 注文の通し番号は、注文時刻順についています。

入力例1
ordered_menu テーブル
ordered_idmenu_idnumsum
1141200
2211250
381350
............
出力例1
ordered_id menu_id num sum
214 15 4 600
265 15 4 600
53 25 2 500
...

問題一覧へ戻る

ページの先頭へ戻る