【发布时间】:2015-09-14 11:40:51
【问题描述】:
我希望为不同的 id 获得长度大于 1 的类型列序列。
创建的表如下
id | type
----+------
1 | E1
1 | E1
2 | A3
3 | B2
1 | A1
4 | C1
5 | C
7 | D
8 | D
9 | A1
3 | D
(11 rows)
这是我首先要实现的目标:
id | type
1 | E1
1 | E1
1 | A1
3 | B2
3 | D
上面的结果是我应该得到的类型序列 E1,E1,A1 用于 id 1 和 B2,D 用于 id 3。
我试过这个无疑是错误的:
select q1.id, q1.type
from
(select row_number() over () as rowno, * from recs) q1,
(select row_number() over () as rowno, * from recs) q2
where q1.rowno > q2.rowno and q1.id = q2.id;`
它给了我类似的东西:
id | type
----+------
1 | E1
1 | A1
1 | A1
3 | D
(4 rows)
在此之后,我想找到最长的序列。
【问题讨论】:
-
相关:Select longest continuous sequence。您的情况是“更简单的选择”。
标签: sql postgresql aggregate-functions amazon-redshift