【问题标题】:Calculating daily volumes from total volume从总交易量计算每日交易量
【发布时间】:2021-10-21 13:13:19
【问题描述】:

我有以下数据:

ID Date Total
A 2021-09-03 0
A 2021-09-04 12
A 2021-09-05 37
A 2021-09-06 40
B 2021-08-03 20
B 2021-08-04 43
B 2021-08-05 75

从这些数据中,我想得到下表:

ID Date Total Daily
A 2021-09-03 0 0
A 2021-09-04 12 12
A 2021-09-05 37 25
A 2021-09-06 40 3
B 2021-08-03 20 20
B 2021-08-04 43 23
B 2021-08-05 75 32

我尝试了以下代码,但我得到了很多重复:

CREATE TABLE table_b AS (
SELECT a.ID, a.Date, a.Total,
a.Total - coalesce(b.Total, 0) AS Daily
FROM table_a a left outer JOIN table_a b
ON (a.ID = b.ID AND b.Date < a.Date));

提前致谢:)

【问题讨论】:

  • table_b 是秘密吗?
  • 没有?它是使用附加代码创建的表,但我希望它像我在描述中显示的那样。
  • 你加入了一个table_b并尝试创建一个在mysql中不起作用的table_b,所以内部table_b必须在运行代码之前存在,请更正查询,这样它就不会感觉你试图减去什么
  • 啊,我的错,这是一个错字。现在它已经修复了。
  • table 是一个受限词,不能在查询中使用,所以你尝试生成一个运行总和?

标签: mysql sql heidisql


【解决方案1】:
SELECT *,
       Total - COALESCE(LAG(Total) OVER (PARTITION BY id ORDER BY `date`), 0) Daily
FROM src_table

【讨论】:

    猜你喜欢
    • 2019-04-11
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2016-05-18
    • 1970-01-01
    • 2017-10-05
    相关资源
    最近更新 更多