【问题标题】:How to find the average difference between each days stock price for the last 2 days for each row如何找到每行最近 2 天每天股票价格之间的平均差异
【发布时间】:2016-03-13 18:42:42
【问题描述】:

我似乎很难获得每行最后连续 2 天的股票价格之间的平均差异,并且希望对此提供任何帮助。我相信使用 Inner Joins 可能有更简单的方法,但我真的很努力。

这是我的桌子

代码 日期 价格 日期 价格 日期 价格 1250 2015-01-14 47.51 2015-01-13 48.30 2015-01-12 48.80

我正在尝试计算所有行的最近 2 天价格之间的平均百分比差异。我的表目前只有符号、日期和价格的数据,我想输出的是

代码 日期 价格 % 变化日期 价格 % 变化日期 价格 1250 2015-01-14 47.51 -1.63 2015-01-13 48.30 2.02 2015-01-12 48.80

感谢您在这方面提供的任何帮助或指导!

【问题讨论】:

  • 您已经尝试过哪些查询/方法?

标签: average percentage array-difference


【解决方案1】:

试试这个:

SELECT
    subQuery1.Symbol,
    subQuery1.Date AS 'Date 1',
    subQuery1.Price AS 'Price 1',
    ROUND(((subQuery1.Price - subQuery2.Price) / subQuery2.Price) * 100, 2) AS '% Change',
    subQuery2.Date AS 'Date 2',
    subQuery2.Price AS 'Price 2',
    ROUND(((subQuery2.Price - subQuery3.Price) / subQuery3.Price) * 100, 2) AS '% Change',
    subQuery3.Date AS 'Date 3',
    subQuery3.Price AS 'Price 3'
FROM
    (SELECT Symbol, Date, Price FROM tbl) AS subQuery1,
    (SELECT Symbol, Date, Price FROM tbl) AS subQuery2,
    (SELECT Symbol, Date, Price FROM tbl) AS subQuery3
WHERE
    subQuery1.Symbol = subQuery2.Symbol
    AND subQuery2.Symbol = subQuery3.Symbol
    AND subQuery1.Date = subQuery2.Date + INTERVAL 1 DAY
    AND subQuery2.Date = subQuery3.Date + INTERVAL 1 DAY

大型数据集的性能不会很好,因为它涉及三个子查询、临时表和无索引...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多