首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按PostgreSQL中的递增列分组行

按PostgreSQL中的递增列分组行
EN

Stack Overflow用户
提问于 2018-11-07 20:51:57
回答 1查看 127关注 0票数 2

我有下表,只有一栏。我想要实现的是将x中没有空隙的所有行分开,例如,数字1-3,5-6和8-9 (因为缺口是4和7)。

代码语言:javascript
运行
复制
+---+
| x |
+---+
| 1 |
| 2 |
| 3 |
| 5 |
| 6 |
| 8 |
| 9 |
+---+

我想让它看起来像这样:一个有两列(a和b)的表,表示前一列x中没有空隙的范围。对每一个空白插入一个新的记录。在PostgreSQL里我该怎么做呢?

代码语言:javascript
运行
复制
+---+---+
| a | b |
+---+---+
| 1 | 3 |
| 5 | 6 |
| 8 | 9 |
+---+---+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-07 20:56:56

您可以将该序列与空白序列与没有空白的序列进行比较:

代码语言:javascript
运行
复制
select min(x), max(x)
from
 (
   select x, 
      x-row_number() over (order by x) as dummy
   from tab
 ) as dt
group by dummy

  x | row_number | x - row_number 
| 1 |   1        |   0             -- same value for consecutive values without gaps
| 2 |   2        |   0
| 3 |   3        |   0
| 5 |   4        |   1
| 6 |   5        |   1
| 8 |   6        |   2
| 9 |   7        |   2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53197626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档