gpt4 book ai didi

php - MySQL 计算 future 6 个月与之前上传日数据的增量(差异)

转载 作者:行者123 更新时间:2023-11-29 06:51:06 24 4
gpt4 key购买 nike

我需要运行一个查询,它将:

  • 计算前一天报告与当前报告之间的差异“Δ”,例如:11 月 23 日的值为 10,11 月 22 日的值为 9,因此 Δ = +1,增加 1
  • 从前一天起 6 个月内的所有日子都这样做

数据

date      value reportDate
1-8-2017 142 1-8-2017
2-8-2017 69 1-8-2017
3-8-2017 57 1-8-2017
4-8-2017 44 1-8-2017

date value reportDate
1-8-2017 136 2-8-2017
2-8-2017 139 2-8-2017
3-8-2017 104 2-8-2017
4-8-2017 66 2-8-2017

所需结果

Report Date: 2-8-2017   

date value Delta
1-8-2017 136 -6
2-8-2017 139 70
3-8-2017 104 47
4-8-2017 66 22

我知道我可以通过在获取日期行后在循环内运行另一个查询来进行计算。但我想在单个查询中进行计算。数据非常大,有数百万条记录,并且每天都在增长。

我想尽可能地优化查询,因为它是系统的瓶颈,并且系统在为每行运行每个查询时会卡住。基本上我在当前按每一行计算时无法做任何事情。

最佳答案

单个查询将是这样的。我希望 datereportDate 列上有一个索引:

SET @date := '2017-08-02';

SELECT t1.date, t2.value, t2.value - t1.value AS delta
FROM test AS t1
JOIN test AS t2 ON (t1.date = t2.date)
WHERE t2.reportDate = @date
AND t1.reportDate = DATE_SUB(@date, INTERVAL 1 DAY);

关于php - MySQL 计算 future 6 个月与之前上传日数据的增量(差异),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457668/

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