【发布时间】:2016-03-08 14:32:24
【问题描述】:
我有这个问题:
SELECT * FROM (
select t.article_number, t.date, t.company, t.size, t.price , count(*) as rnk
from price t
INNER JOIN price s
ON(t.article_number = s.article_number and t.company = s.company and t.date <= s.date)
GROUP BY t.article_number,t.company,t.date,t.size,t.price
)
WHERE rnk <= 2
order by article_number, company, date
适用于这些数据:
('50240-20', '2016-03-08 13:06:12.872955', '2B', '20', '645,75')
('50240-20', '2016-03-08 13:13:55.311955', '2B', '20', '645,75')
('50240-20', '2016-03-08 13:47:13.737155', '2B', '20', '635,75')
('50240-20', '2016-03-08 13:51:32.677155', '2B', '20', '645,75')
('50240-20', '2016-03-08 13:06:12.872955', 'Bio', '20', '423,20')
('50240-20', '2016-03-08 13:13:55.311955', 'Bio', '20', '423,20')
('50240-20', '2016-03-08 13:47:13.737155', 'Bio', '20', '403,20')
('50240-20', '2016-03-08 13:51:32.677155', 'Bio', '20', '423,20') ...
它产生这样的输出:
('50240-20', '2016-03-08 13:47:13.737155', '2B', '20', '635,75', 2)
('50240-20', '2016-03-08 13:51:32.677155', '2B', '20', '645,75', 1)
('50240-20', '2016-03-08 13:47:13.737155', 'Bio', '20', '403,20', 2)
('50240-20', '2016-03-08 13:51:32.677155', 'Bio', '20', '423,20', 1) ...
但我想按这两个日期之间的最大价格差异对输出进行排序。所以它应该是这样的:
('50240-20', '2016-03-08 13:47:13.737155', 'Bio', '20', '403,20', 2)
('50240-20', '2016-03-08 13:51:32.677155', 'Bio', '20', '423,20', 1)
('50240-20', '2016-03-08 13:47:13.737155', '2B', '20', '645,75', 2)
('50240-20', '2016-03-08 13:51:32.677155', '2B', '20', '635,75', 1) ...
因为顶级产品的价格变化了 4.7%,而第二个产品的价格变化了 1.6%
我希望你明白我的意思,也许可以提出一个解决方案,因为我在 sql 方面不是那么好。我在 python 中使用 sqlite3。
非常感谢!
【问题讨论】:
-
变化是指增加,也可以同时增加或减少
-
是的百分比差异最大。不管是正面还是负面