mysql:8278
From: UNO Shintaro <UNO Shintaro <uno@xxxxxxxxxx>>
Date: Wed, 15 Oct 2003 23:31:31 +0900
Subject: [mysql 08278] Re: ランキングをつける方法?
>> 私の場合ランキングというと、「上位30商品を表示」というようなイメージがあり >> ました。 >> こういった場合だと、「LIMIT 30」をSELECT文の最後につければ実現できるのでは >> ?ということではないかと思います。 > >そうですね、「ランキング」という言葉でなく、「順位づけ」という表現にしておけ >ば誤解がなかったですね。僕の表現ミスです、ごめんなさい。 なるほどー。私も誤解しちゃいました!すみません。 話が大体理解できたので私なりにざくっと作ってみたら 下記のような感じです。 野村さんのおっしゃる「ごりごり」がこれだったら、 これ以上はすぐには思いつきません…。 入力: uriage_table (sku, uriage, その他) ... 同じskuに対して複数の売り上げが存在すると仮定。 出力: ranking_table (sku, uriage, ranking) ... skuがプライマリキー。skuごとの総売上とランクが入る。 作業用: work_table (sku, uriage) ... skuがプライマリキー。skuごとの総売上を一旦ここに貯める。 uriageにインデックスを張っておくといいかも。 処理: DELETE FROM work_table; INSERT INTO work_table (sku, uriage) SELECT sku, SUM(uriage) FROM uriage_table GROUP BY sku; DELETE FROM ranking_table; INSERT INTO ranking_table (sku, uriage, ranking) SELECT sku, uriage, 1 FROM work_table; REPLACE INTO ranking_table SELECT a.sku,a.uriage,COUNT(*)+1 FROM work_table a, work_table b WHERE a.uriage < b.uriage GROUP BY a.sku,a.uriage; -- UNO Shintaro, 宇野 信太郎 mailto:uno@xxxxxxxxxx http://www.venus.dti.ne.jp/~uno/
8272 2003-10-15 20:47 [TORU NOMURA <toru200] ランキングをつける方法? 8273 2003-10-15 21:51 ┗[UNO Shintaro <uno@xx] 8274 2003-10-15 22:16 ┗[TORU NOMURA <toru200] 8275 2003-10-15 22:40 ┣["HIGUCHI Koichi" <ko] 8276 2003-10-15 23:09 ┃┗[TORU NOMURA <toru200] 8277 2003-10-15 23:20 ┃ ┣[mohri <mohri@xxxxxxx] -> 8278 2003-10-15 23:31 ┃ ┗[UNO Shintaro <uno@xx] 8279 2003-10-15 23:34 ┃ ┗[UNO Shintaro <uno@xx] 8281 2003-10-16 03:32 ┗[seiji takegata <take] 8282 2003-10-16 19:56 ┗[TORU NOMURA <toru200] 8292 2003-10-18 04:26 ┗[seiji takegata <take]