首页 > 解决方案 > 按数据分组,同一组多次出现

问题描述

输入数据

标识组

1个

1个

1个

1个

1个

1个

1个

预期结果

id 组 row_number

1   a   1

1   a   1

1   b   2

1   b   2

1   a   4

1   a   4

1   a   4

我需要基于上述结果的 rwo_number。如果第二次发生的同一组会为此生成不同的row_number?我还有一个自上而下的日期列序列。

标签: sqlamazon-redshift

解决方案


这是差距和孤岛问题的一个例子。但是,解决它需要对数据进行排序——而 SQL 表表示无序集。

让我假设你有这样一个专栏。然后可以使用行号的差异:

select t.*,
       dense_rank() over (partition by id order by grp, (seqnum - seqnum_g)) as grouping
from (select t.*,
             row_number() over (partition by id order by ?) as seqnum,
             row_number() over (partition by id, grp order by ?) as seqnum_g
      from t
     ) t;

这不会产生您特别要求的值,但会识别每个组。


推荐阅读