我想计算连续行中两个值的差。例如:计算燃油价格与前一天的差价。如何使用sql查询解决这个问题(下面给出了值)。请帮助我
Date Speed Petrol Diesel
2018-04-01 79.22 76.41 68.89
2018-04-02 79.32 76.52 69.01
2018-04-04 79.45 76.64 69.15
2018-04-05 79.48 76.67 69.18
2018-04-06 79.48 76.67 69.21
2018-04-07 79.5 76.69 69.25
2018-04-08 79.53 76.72 69.3
2018-04-09 79.49 76.69 69.27
2018-04-10 79.48 76.67 69.3
2018-04-11 79.48 76.67 69.3
2018-04-12 79.44 76.63 69.27
2018-04-13 79.4 76.6 69.3
3条答案
按热度按时间flvtvl501#
因为在我看来这是一种商业逻辑。我相信,在代码中这样做比在sql查询中更好。
您可以获取行对象列表中的所有数据,并可以找到差异。
dxxyhpgq2#
如果您的版本不支持窗口功能,您可以使用子查询来获取昨天的价格
r55awzrz3#
看起来是使用mysql 8.0中新窗口功能的好机会
假设其中一个与燃料价格有关,您希望结果按日期升序排列,并生成一个如下所示的表
可以使用lag()函数来获取任何列的差异。
例如。
https://www.db-fiddle.com/f/nltrhsukely6ypmsaekrcn/5