【问题标题】:SQL LAG functionSQL LAG 函数
【发布时间】:2021-10-11 06:32:48
【问题描述】:

我尝试使用 LAG 函数来计算前几周的值,但由于缺少某些周,因此数据存在差距。

这是桌子:

问题在于 LAG 函数采用表中找到的前一周。但如果前一周不是连续的前一周,我希望它为零。

这就是我想要的:

我愿意接受任何解决方案。

提前谢谢你

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。我迷失了订购。请解释数据是如何排序的(大概是第一列)以及该列的含义。您的示例代码也会有所帮助。
  • 实现这一点的最简单方法是使用某种日历维度,您可以将数据链接到该维度。无论您是否有该特定周的交易数据,您都会在日历中获得周数。

标签: sql lag


【解决方案1】:

您的示例数据令人费解。每个时间范围内有多行。第一列看起来像一个字符串,这对于比较没有任何意义。

那么,让我根据更简单的数据模式来回答。答案是使用range。如果您有一个指定时间范围的整数列:

ordering     sales
    1         10
    2         20
    3         30
    5         50

然后你会这样表述:

select max(sales) over (order by ordering range between 1 preceding and 1 preceding)

这将返回第一列定义的“上一个”行中的值。该值将位于单独的中,而不是单独的中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2016-09-19
    • 2019-12-15
    • 2023-03-16
    相关资源
    最近更新 更多