gpt4 book ai didi

sql - 如何将 Snowflake 中的 LAG FUNCTION 与 TIMESTAMPS 一起使用?

转载 作者:行者123 更新时间:2023-12-05 02:44:39 25 4
gpt4 key购买 nike

这是我的基本表的构建方式:

我有用户将各种操作日期作为时间戳(日期、小时、分钟、秒)。用户的操作要么相隔几天,要么相隔几个小时。我正在尝试使用 LAG 函数找到每个用户的每个操作之间的间隔。当我将时间戳转换为 DATES 时,我在 Snowflake 中的查询工作得很好。当用户在同一天有2个 Action 时,我的时间间隔是=0。我想看到这个基于分钟(或秒,无所谓)的时间间隔。这是我在雪花中使用的当前查询:

 SELECT 
USERS,
RANK() OVER(PARTITION BY USERS ORDER BY ACTION_DATE ASC) RowNumber,
CAST(ACTION_DATE AS DATE),
(CAST(ACTION_DATE AS DATE) - LAG(CAST(ACTION_DATE AS DATE)) OVER (PARTITION BY users ORDER BY ACTION_DATE)) AS TIME_INTERVAL
from TABLE1
ORDER BY 1,2,3;

截至目前,此查询在 Snowflake 中运行良好,但我需要能够使用我的时间戳获取这些时间间隔,而不仅仅是将我的时间戳转换为日期。

我在 Snowflake 中得到的错误是:

SQL compilation error: error line 6 at position 21 Invalid argument types for function '-': (TIMESTAMP_NTZ(9), TIMESTAMP_NTZ(9))

有谁知道我如何使用带有时间戳的 LAG FUNCTION,或者我是否应该使用其他函数?

最佳答案

如果您想要不同,请使用 datediff()timestampdiff()。几秒钟:

DATEDIFF(second,
LAG(ACTION_DATE) OVER (PARTITION BY users ORDER BY ACTION_DATE),
ACTION_DATE
) AS DIFF_SECONDS

关于sql - 如何将 Snowflake 中的 LAG FUNCTION 与 TIMESTAMPS 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66336278/

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