我在Redshift中有一个关于分组的小问题;我有一个如下表:
输入
VALUE CREATED UPDATED
------------------------------------
1 '2020-09-10' '2020-09-11'
1 '2020-09-11' '2020-09-13'
2 '2020-09-15' '2020-09-16'
1 '2020-09-17' '2020-09-18'
我想获得以下输出:
VALUE CREATED UPDATED
------------------------------------
1 '2020-09-10' '2020-09-13'
2 '2020-09-15' '2020-09-16'
1 '2020-09-17' '2020-09-18'
如果我按值进行简单的“最大”和“最大”日期分组,则无法使用。
这是一个空白与孤岛问题的例子。如果数据中没有时间间隔,那么行号的不同是一个简单的解决方案:
select value, min(created), max(updated)
from (select t.*,
row_number() over (order by created) as seqnum,
row_number() over (partition by value order by created) as seqnum_2
from t
) t
group by value, (seqnum - seqnum_2)
order by min(created);
为什么这行得通,有点棘手的解释。但是,如果您查看子查询的结果,则会看到行号之间的差异如何识别具有相同的相邻行value
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句