gpt4 book ai didi

sql - 计算两行之间的百分比变化

转载 作者:行者123 更新时间:2023-12-04 10:54:39 26 4
gpt4 key购买 nike

我知道已经有人问过这个问题。但是,我在SQL和MySQL方面相对较新,因此我对其他答案感到困惑。

假设我有一个历史财务数据表,并且有多个记录。

Date       | Close Price | % Change
2014-03-25 | 3.58 | ?
2014-03-24 | 3.57 | ?
2014-03-21 | 3.61 | ?


我在表中有日期和收盘价。我想找到每天变化的百分比。例如,从2014-03-24到2014-03-25约为+ 0.28%。

我完全停留在如何对所有记录执行此操作而又不运行大量单个查询的情况。我以为这是某种形式的联接,但这是我感到困惑的地方,因为我以前没有做过这些。

最佳答案

我想这样的事情会做到的

SELECT x.Date, x.Close_Price, (((x.Close_Price / y.Close_Price) - 1) * 100) AS '% Change'
FROM
(
SELECT a.Date AS aDate, MAX(b.Date) AS aPrevDate
FROM SomeTable a
INNER JOIN SomeTable b
WHERE a.Date > b.Date
GROUP BY a.Date
) Sub1
INNER JOIN SomeTable x ON Sub1.aDate = x.Date
INNER JOIN SomeTable y ON Sub1.aPrevDate = y.Date
ORDER BY x.Close_Price DESC


当日期不是一个接一个的日期(例如,未处理的日期缺少记录)时,这将解决。

子查询获取每个日期,以及小于该日期的最大日期。然后将其与表格结合起来,以获取该日期和前一个日期的完整记录,然后可以进行计算。

编辑-并根据此SELECT更新:

UPDATE treasury x
INNER JOIN
(
SELECT a.Date AS aDate, MAX(b.Date) AS aPrevDate
FROM treasury a
INNER JOIN treasury b
WHERE a.Date > b.Date
GROUP BY a.Date
) Sub1 ON Sub1.aDate = x.Date
INNER JOIN treasury y ON Sub1.aPrevDate = y.Date
SET x.PercentChange = (((x.Close_Price / y.Close_Price) - 1) * 100)

关于sql - 计算两行之间的百分比变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com