【问题标题】:How to calculate week over week changes in SQL?如何计算 SQL 中的每周变化?
【发布时间】:2022-01-02 18:18:22
【问题描述】:

我有一个包含 3 列的数据表:周、类型和单位。我想计算每种类型的单位每周变化,结果表会是这样的:

Week         Type   Units   Change
2020-12-01    A      10      null
2020-12-01    B      15      null
2020-12-01    C      20      null
2020-12-01    D      18      null
2020-12-08    A      20       10
2020-12-08    B      15       0
2020-12-08    C      25       5
2020-12-08    D      15      -3
... 

我尝试使用 lag 功能但失败了,可能是因为我对在 partition by 和 order by 中使用什么感到困惑。有人可以帮帮我吗?

【问题讨论】:

  • 根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。
  • 请提供minimal reproducible example 示例数据、期望的结果和您的尝试。

标签: sql sql-server tsql aggregate-functions


【解决方案1】:

由于您想要相同“类型”的先前“单位”,因此分区位于“类型”上。

SELECT *
, Units - LAG(Units) OVER (PARTITION BY [Type] ORDER BY [Week]) AS Change
FROM data_table

【讨论】:

  • 您好,谢谢您的回答,我尝试了您的方法,但结果不对。我想计算变化。
  • 你使用的是当前版本吗?
  • 是的,现在可以了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
相关资源
最近更新 更多