[前][次][番号順一覧][スレッド一覧]

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]