問題ID:19926について
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID:19926について
msg# 1
Kazumi94
投稿数: 6
解説を読んだのですが、わからない部分があるためご教授ください。
設問のSQL実施時と正しいSQL実施時で4つのデータが抽出されなくなっております。
ここで求めたいのは「TIME_ID列(売れた日)」がそれぞれのプロモーションの開始日〜終了日の間になっていれば抽出対象データという理解をしております。
とすると正しいSQLを実施した際に以下の4つのデータが抽出対象から消えるのですが、「TIME_ID列(売れた日)」は開始日〜終了日の間の日付となっているのに抽出対象外になった理由がわかりません。
PROMO_NAME PROMO_BE PROMO_EN TIME_ID QUANTITY_SOLD
------------------ -------- -------- -------- -------------
プロモーション4 11-12-24 12-12-31 11-12-31 15
プロモーション4 11-12-24 12-12-31 12-04-01 9
プロモーション3 12-02-22 12-07-10 16
プロモーション3 12-02-22 13-01-15 10
上記4件が対象ではない理由についてご教授ください。
設問のSQL実施時と正しいSQL実施時で4つのデータが抽出されなくなっております。
ここで求めたいのは「TIME_ID列(売れた日)」がそれぞれのプロモーションの開始日〜終了日の間になっていれば抽出対象データという理解をしております。
とすると正しいSQLを実施した際に以下の4つのデータが抽出対象から消えるのですが、「TIME_ID列(売れた日)」は開始日〜終了日の間の日付となっているのに抽出対象外になった理由がわかりません。
PROMO_NAME PROMO_BE PROMO_EN TIME_ID QUANTITY_SOLD
------------------ -------- -------- -------- -------------
プロモーション4 11-12-24 12-12-31 11-12-31 15
プロモーション4 11-12-24 12-12-31 12-04-01 9
プロモーション3 12-02-22 12-07-10 16
プロモーション3 12-02-22 13-01-15 10
上記4件が対象ではない理由についてご教授ください。
Re: 問題ID:19926について
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:うーん、問題文の意図を私が誤読していなければ、という前提ですが。
Kazumi94 さんの想定される「「TIME_ID列(売れた日)」がそれぞれのプロモーションの開始日〜終了日の間になっていれば抽出対象データ」はたしかに大事なポイントではあるのですが、「プロモーション対象商品かどうか」という観点が抜けているのではないかと思います。
「抽出対象外になった理由がわからない」のは「期間」だけで考えているからであって「この期間に売れたということはこのプロモーションにヒットしているはず」という前提に立っている、ということになるかと思います。
現実世界の例で言えば
・7/13の週は「ガソリン10円引き」セールをしている
・7/15に「灯油」が売れた
・では「灯油」は「ガソリン10円引き」セールの商品として抽出されるのが正しいか?
ということですね。
設問のSALES3表には「PROMO_ID」があるので、PROMOTIONS表と結合するべき列はTIMEではなくPROMO_IDだと判断するのが妥当だということになるかと思います。そういう意味で、「PROMO_ID」で結合していないので抽出される行が正しくない、という答えが導き出されるのだと思います。
ここで求めたいのは「TIME_ID列(売れた日)」がそれぞれのプロモーションの開始日〜終了日の間になっていれば抽出対象データという理解をしております。
とすると正しいSQLを実施した際に以下の4つのデータが抽出対象から消えるのですが、「TIME_ID列(売れた日)」は開始日〜終了日の間の日付となっているのに抽出対象外になった理由がわかりません。
Kazumi94 さんの想定される「「TIME_ID列(売れた日)」がそれぞれのプロモーションの開始日〜終了日の間になっていれば抽出対象データ」はたしかに大事なポイントではあるのですが、「プロモーション対象商品かどうか」という観点が抜けているのではないかと思います。
「抽出対象外になった理由がわからない」のは「期間」だけで考えているからであって「この期間に売れたということはこのプロモーションにヒットしているはず」という前提に立っている、ということになるかと思います。
現実世界の例で言えば
・7/13の週は「ガソリン10円引き」セールをしている
・7/15に「灯油」が売れた
・では「灯油」は「ガソリン10円引き」セールの商品として抽出されるのが正しいか?
ということですね。
設問のSALES3表には「PROMO_ID」があるので、PROMOTIONS表と結合するべき列はTIMEではなくPROMO_IDだと判断するのが妥当だということになるかと思います。そういう意味で、「PROMO_ID」で結合していないので抽出される行が正しくない、という答えが導き出されるのだと思います。
Re: 問題ID:19926について
msg# 1.2
Kazumi94
投稿数: 6
ご教授ありがとうございます。
ご指摘通り「期間」の部分のみで「プロモーション対象商品化どうか」の部分についてが抜けておりました。
結果を見てデータがおかしく思えたのでそこに注目していましたが「PROMO_ID」を使って結合するのが目的(解答)なので結果に重きをおいてしまったのが良くなかったですね。
私の中での疑問点も整理していただきありがとうございました。
ご指摘通り「期間」の部分のみで「プロモーション対象商品化どうか」の部分についてが抜けておりました。
結果を見てデータがおかしく思えたのでそこに注目していましたが「PROMO_ID」を使って結合するのが目的(解答)なので結果に重きをおいてしまったのが良くなかったですね。
私の中での疑問点も整理していただきありがとうございました。