0

過去のさまざまな日付の商品の価格表があります。基本的に私が持っているものは次のとおりです。

Item      Price   Date
----------------------------
Item 1    1.83    04-06
Item 1    1.56    04-07
Item 2    2.37    04-06
Item 2    2.94    04-07
Item 3    0.68    04-06
Item 3    0.54    04-07

商品を価格の変化順に並べ替えたい。MySQL を使用してこれにアプローチする方法がわかりません。これは MySQL だけを使用しても可能ですか?

4

3 に答える 3

0

あなたのテーブルの名前はItems. このようなもの?

SELECT t1.Price - t2.Price as PriceDiff, t2.* 
FROM Items as t1, Items as t2 
WHERE TO_DAYS(t1.Date) - TO_DAYS(t2.Date) = 1 AND t1.Item = t2.Item 
ORDER BY PriceDiff ASC

キーは、アイテム名と前日のアイテムに従ってアイテムに一致する次のとおりです...現在のタイプがわからない場合は、日付列を日時に変更する必要がある場合があります。

TO_DAYS(t1.date) - TO_DAYS(t2.date) = 1 AND t1.Item = t2.Item

特定の日のみの価格変更が必要な場合は、追加しますAND Date = 'yourdate'

于 2013-04-08T02:06:00.540 に答える
0

Andy が言ったことに加えて、一般に、テーブルをそれ自体と比較するたびに (つまり、同じテーブル内の 2 つの行の間の関数)、関数内の各変数の結合が必要になります。

SELECT i1.price as 'i1', i2.price as 'i2', i1.price-i2.price as priceDiff, i1.id
FROM itemPrice i1
JOIN itemPrice i2 on i1.id = i2.id
WHERE DATE_ADD(i1.pdate, INTERVAL -1 DAY) = i2.pdate
ORDER BY PRICEDIFF desc

http://sqlfiddle.com/#!2/3eec6/4

于 2013-04-08T02:21:18.920 に答える
0

次のSQLを実行する必要があります

SELECT Item, MAX(Price) - MIN(Price) as PriceDiff
FROM Table
GROUP BY Item
ORDER BY MAX(Price) - MIN(Price)
于 2013-04-08T04:11:39.520 に答える