我想知道这是否甚至可以纯粹用MySQL做。
前5个列表,在同一数据点的2个不同条目之间进行了大多数改进。
2
我基本上需要它按顺序返回3
和2
,因为3
提高了1
以上。
{{1}}不应该是结果,因为它在几年之间没有改善。
答案 0 :(得分:2)
在此处查看:http://rextester.com/TBX28881
select f1.id, (f2.amount - f1.amount) balance
from foot f1
inner join foot f2
on f2.id = f1.id
and f2.year = 2017
where f1.year = 2016
order by balance desc
limit 5;
;
id | balance
---- --------
2 3000
3 100
1 -1000
答案 1 :(得分:1)
诀窍是将表连接到自身。
SELECT y1.id, (y1.amount - y0.amount) AS improvement
FROM yrtable AS y1
JOIN yrtable AS y0 ON y0.id = y1.id
WHERE y0.year = y1.year + 1
AND y0.amount > y1.amount
ORDER BY (y1.amount - y0.amount)