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)小計


注文履歴が ordered テーブルに保存されています。
ordered テーブルの形式は次の通りです。
#カラム名データ型内容
1ordered_id整数 (int)注文の通し番号
2datetime日時 (datetime)注文がおこなわれた日時
3bill整数 (int)注文の合計金額


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


先月まで フライドポテトL の販売数が、3 ヵ月連続で落ちていることがわかりました。
実は フライドポテトLフライドポテトM とほとんど量が変わらないにもかかわらず、フライドポテトM より価格が 50 円高いため、フライドポテトL が売れたほうが嬉しいです。
そこで、次の【 条件 】をどちらも満たした注文をしてくれたお客さんにクーポンを渡すキャンペーンを実施しました。
キャンペーンがどれほど好評だったかを調べるために、クーポンを受け取ったお客さんの注文番号を、注文番号の昇順に並べ替えてすべて取得してください。

【 条件 】
・注文時刻が 2021-12-17 12:00:00 から 2021-12-17 12:59:59 の間でないこと(あまりクーポンが出すぎると困るため)
フライドポテトL を注文するか、フライドポテトM2 個以上注文すること(フライドポテトM でも 2 個以上買ってくれたら嬉しいため)

注文時刻や、メニューの情報は次の通りです。
SELECT ordered_id, datetime FROM ordered WHERE datetime < "2021-12-17 12:00:00" ORDER BY datetime DESC LIMIT 1;
ordered_id datetime
42 2021-12-17 11:59:00

SELECT ordered_id, datetime FROM ordered WHERE datetime > "2021-12-17 12:59:59" ORDER BY datetime LIMIT 1;
ordered_id datetime
76 2021-12-17 13:00:00

SELECT menu_id, name FROM menu WHERE name = "フライドポテトM" OR name = "フライドポテトL";
menu_id name
11 フライドポテトM
12 フライドポテトL


※ 注文番号は連番です。
※ もし、1 回の注文で フライドポテトL1 個以上と、フライドポテトM2 個以上注文するようなものがあった場合でも、注文番号の重複を除去することはせず、2 つ出力してください。

回答形式


ordered_id
ordered_id_1
...
ordered_id_n

入力例1
ordered_menu テーブル
ordered_idmenu_idnumsum
1141200
2211250
381350
............
出力例1
ordered_id
6
25
38
...

問題一覧へ戻る

ページの先頭へ戻る