【发布时间】:2021-03-26 22:42:09
【问题描述】:
我正在努力寻找解决方案。我还附上了一张图片,其中概述了我想要的东西,但我也会在这里写。
在LAG函数中,语法中是否可以有动态数字?
LAG(sessions, 3)
我需要列数minutosdelift,而不是使用 3,在本例中为 3,但每种情况会有所不同。
我尝试使用LAG(sessions, minutosdelift),但这是不可能的。我试过LAG(sessions, COUNT(minutosdelift)) 也不行。
最终目标是计算 52 和 6 之间的差异。所以,(52/6)-1 给了我 767%。但要做到这一点,我需要一个动态数字到 LAG 函数中(或其他想法)。
我尝试过使用ROWS PRECEDING AND ROWS UNBOUNDED PRECEDING,但它再次需要一个文字数字。
请问您知道怎么做吗?谢谢!
这个屏幕截图可能会解释它:
我的代码:这是我尝试的最后一个查询,因为我有 7 个以前的视图
SELECT
DATE, HOUR, MINUTE, SESSIONS, PROGRAMA_2,
janela_lift_teste, soma_sessao_programa_2, minutosdelift,
CASE
WHEN minutosdelift != 0
THEN LAG(sessions, 3) OVER(ORDER BY DATE, HOUR, MINUTE ASC)
END AS lagtest,
CASE
WHEN programa_2 = "#N/A" OR programa_2 is null
THEN LAST_VALUE(sessions) OVER (PARTITION BY programa_2 ORDER BY DATE, HOUR, MINUTE ASC)
END AS firstvaluetest,
FROM
tbl8
GROUP BY
DATE, HOUR, MINUTE, SESSIONS, PROGRAMA_2,
janela_lift_teste, minutosdelift, soma_sessao_programa_2
ORDER BY
DATE, HOUR, MINUTE ASC
【问题讨论】:
标签: sql google-bigquery lag