小编Jus*_*Mit的帖子

如何在带有时间戳的 Snowflake 中使用 LAG 函数?

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

我的用户有各种操作日期作为时间戳(日期、小时、分钟、秒)。用户的操作要么相隔几天,要么相隔几个小时。我试图使用 LAG 函数找到每个用户的每个操作之间的间隔。当我将时间戳转换为日期时,我在 Snowflake 中的查询工作得非常好。当用户在同一天有 2 个操作时,我的时间间隔却=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;
Run Code Online (Sandbox Code Playgroud)

到目前为止,这个查询在 Snowflake 中工作得很好,但我需要能够使用我的时间戳来获取这些时间间隔,而不仅仅是将我的时间戳转换为日期。

我在 Snowflake 中遇到的错误是:

SQL 编译错误:错误第 6 行位于位置 21 函数“-”的参数类型无效:(TIMESTAMP_NTZ(9),TIMESTAMP_NTZ(9))

有谁知道我如何将我的 LAG FUNCTION 与时间戳一起使用,或者我是否应该使用不同的函数?

sql lag snowflake-cloud-data-platform

4
推荐指数
1
解决办法
1万
查看次数

如何将雪花中单词的第一个字母大写?

我需要将 Snowflake 中的 SQL qwery 中某些单词的首字母大写。

我目前正在使用这个功能:

SELECT ...
    case when FLAG1 is null then upper(FLAG2) else FLAG1 END as STATUS,
...;
Run Code Online (Sandbox Code Playgroud)

UPPER()然而,该函数使我的所有FLAG2单词都完全大写。有人知道雪花中单词的第一个字母如何大写吗?

sql string snowflake-cloud-data-platform

4
推荐指数
1
解决办法
4211
查看次数

标签 统计

snowflake-cloud-data-platform ×2

sql ×2

lag ×1

string ×1