Puzzle23:雑誌と売店

問題

雑誌販売を管理するためのテーブルTitles, Newsstands, Salesがある。
以下の条件をどちらかでも満たしているすべての売店を求めよ。
1. SKUが2667番と48632番の二つの雑誌について、net_sold_qty(売上部数)の平均がともに2より大きい(一方でも2以下であればその売店は選択しない)
2. SKUが1107番の雑誌についてnet_sold_qtyの平均が5より大きい(この条件を満たすなら1の条件を満たすか否かにかかわらず選択する)

chieminの解答

ごめんなさい、どうすれば良いか分からなかったので、かなり苦しまぎれです。
手続き的言語モードになっているのだろうか…。
select n.stand_name
from (
  select N.stand_nbr as stand_nbr,magazine_sku,avg(net_sold_qty) as avg,
case when magazine_sku=1107 then 100 else 1 end pnt
 from Titles T, Sales S
 where T.product_id = S.product_id
    and magazine_sku in (2667,48632,1107)
    group by S.stand_nbr,magazine_sku
    having avg(net_sold_qty)>=2) s, Newsstands n
where s.stand_nbr=n.stand_nbr
group by s.stand_nbr
having sum(avg*pnt)>=500 or (sum(avg*pnt) between 4 and 200);
+-------------+
| stand_name  |
+-------------+
| Newsstands2 | 
| Newsstands3 | 
+-------------+
2 rows in set (0.00 sec)

  • 内側の副問合せでやってること
    • Title, Salesを結合しskuが2667,48632,1107のものだけ選択
    • stand_nbr,magazine_skuでグループ化し売上平均が2以上のものだけを選択
    • Select節に pnt属性として1107の場合のみ100、それ以外は1の値を出力

  • 外側の問い合わせでやっていること
    • 売上平均にpntをかけ合わせて合計
    • skuが1107の場合は必ず200以上になる
    • 200以下の場合は4以上になればよい。

合計値が1107の雑誌以外で合計値が200を超えてしまうと成立しなくなるが、その場合はskuが1107の場合につけるpntの値を調節すれば良い。

fumikoさんの解答

2008年04月01日13時04分15秒.pdf
  • 7つもあったのに私の解答例みたいなのはありませんでした。ちょっと苦しまぎれすぎた? -- (chiemin) 2008-04-01 18:14:47
  • fumikoさんの解答はばっちり解答例5と一緒でした。でもなぜか答えが出てこない… -- (chiemin) 2008-04-01 18:15:27
puzzle23
コメント

すべてのコメントを見る

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年04月02日 23:02