我有一张过去不同日期的商品价格表。这基本上就是我所拥有的:
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?
答案 0 :(得分: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'
答案 1 :(得分: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
答案 2 :(得分:0)
以下sql应该做
SELECT Item, MAX(Price) - MIN(Price) as PriceDiff
FROM Table
GROUP BY Item
ORDER BY MAX(Price) - MIN(Price)