mysqlで取得したデータにランキングを振りたいです。


以下のテーブル構成で、セール期間中(sale_str_dmとsale_end_dm)なら
セール価格(sale_price)を使い、そうでなければ価格(price)を使って
それで並び替えて順位をつけたいです。
サンプルを教えていただきたです。
CREATE TABLE ranking (
id bigint(20) NOT NULL primary key auto_increment,
name varchar(20) NOT NULL,
price decimal NOT NULL
sale_price decimal,
sale_str_dm datetime,
sale_end_dm datetime,
);

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/10/14 15:41:15
  • 終了:2013/10/21 15:45:03

回答(1件)

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932013/10/14 16:55:23

ポイント200pt
select 
	(case when now() <= sale_end_dm and sale_str_dm <= now() then
		sale_price
	else
		price
	end) as my_price
,* from ranking
order by my_price
id:yayayai

ありがとうございます~
これに1,2,3のようなランキング列を出したいすねー

2013/10/14 17:49:48
id:yayayai

自分で作ったのは以下。
正しくでてそうだけど、あってるか不安。

SELECT
SHOUHIN_CD,
(CASE WHEN now() <= sale_end_dm AND sale_str_dm <= now()
THEN sale_price ELSE price END) AS LAST_PRICE,
(
SELECT
COUNT(*)
FROM
ranking b
WHERE
(CASE WHEN now() <= b.sale_end_dm AND b.sale_str_dm <= now()
THEN b.sale_price ELSE b.price END)
<
(CASE WHEN now() <= a.sale_end_dm AND a.sale_str_dm <= now()
THEN a.sale_price ELSE a.price END)
) + 1 AS RANKING
FROM
ranking a
ORDER BY
RANKING

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません