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
最終更新:2008年04月02日 23:02