SQL - Redshift 滞后函数获取重复项

Posted

技术标签:

【中文标题】SQL - Redshift 滞后函数获取重复项【英文标题】:SQL - Redshift Lag Function getting duplicates 【发布时间】:2020-04-15 20:02:02 【问题描述】:

我在下面有一张桌子

ID  Type  Sub_ID   Date    CNT
A    P     A1    4/1/2020   5
A    P     A2    4/5/2020   NULL
A    P     A3    4/8/2020   NULL

我想要得到的是

ID  Type  Sub_ID   Date    CNT    LAG
A    P     A1    4/1/2020   5     NULL
A    P     A2    4/5/2020   NULL   5
A    P     A3    4/8/2020   NULL   NULL

我有以下查询,但它给了我类似的重复项

ID  Type  Sub_ID   Date    CNT    LAG
A    P     A1    4/1/2020   5     NULL
A    P     A1    4/1/2020   5      5 (duplicate)
A    P     A2    4/5/2020   NULL   5 
A    P     A2    4/5/2020   NULL   NULL (duplicate)
A    P     A3    4/8/2020   NULL   NULL

select *, lag(cnt,1) over (partition by id, type order by date)
from mytable

有什么问题吗?

【问题讨论】:

您的处理有问题。 lag() 不添加行。 @GordonLinoff 对..那么我该如何解决这个问题?我认为我正确使用了该功能.. 【参考方案1】:

好的...我的表格中有重复的数据..需要先进行重复数据删除,然后在清理过的表格上进行延迟

【讨论】:

以上是关于SQL - Redshift 滞后函数获取重复项的主要内容,如果未能解决你的问题,请参考以下文章

用 redshift SQL 替换基于循环的重复数据删除代码

如何根据 Where 条件获取 Redshift 中的上述值?

是否有 R 函数或 SQL 解决方案用于将所有相同的数字重复分组并将它们分配给所有行?

SQL(Redshift)获取多个表的交集

有用的 Amazon Redshift SQL 用户定义函数的任何示例?

Redshift SQL REGEXP_REPLACE 函数