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 所说的,一般来说,您每次想要将一个表与其自身进行比较时(即同一个表中两行之间的某个函数),您将需要对函数中的每个变量进行连接。

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 回答