这个问题在这里已经有了答案:
postgresql给出“1,2,3,6,7,8,11,12,15,18,19,20”,一个查询返回每组连续数字的最大值(1个答案)
10个月前关门了。
给定一组数字,如“1,2,3,6,7,8,11,12,15,18,19,20”,编写一个查询以返回每组连续数字的最大值。
首先需要找出哪些数字应该在一个组中,然后找出每个组中的最大值。
create table tt (c1 numeric);
insert into tt values
(1),(2),(3),(6),(7),(8),(11),(12),(15),(18),(19),(20);
所以答案是3,8,12,15,20
2条答案
按热度按时间7fyelxc51#
我不能重复结束这个问题,但我可以在这里复制我的答案:假设你想要3、8、12、15和20,你可以使用lead():
它使用的观察结果是,您可以通过将“下一个数字”与当前值加1进行比较来找到结束数字。
如果您希望这些字符串:
这是一把小提琴。
j9per5c42#
我将你的问题改为:获取下一个值不按顺序排列的数字。如果是这样,您可以只使用窗口函数:
对于示例数据,这将生成:
如果您还想捕获最后一条记录(显然,它没有跟随者),您可以更改
where
条款至: