gpt4 book ai didi

sql - 组顺序整数postgres

转载 作者:行者123 更新时间:2023-11-29 14:06:11 25 4
gpt4 key购买 nike

我有一个返回的查询:

1
2
5
7
8

我想像这样对行进行分组:

{1,2}
{5}
{7,8}

换句话说,我需要对顺序值进行分组。

有什么想法吗?

最佳答案

这是一个缺口和孤岛问题。

您可以尝试生成行号,然后进行一些计算,生成group by 编号。

CREATE TABLE T(
ID INT
);

INSERT INTO T VALUES (1);
INSERT INTO T VALUES (2);
INSERT INTO T VALUES (5);
INSERT INTO T VALUES (7);
INSERT INTO T VALUES (8);

查询 1:

WITH CTE AS (
SELECT Min(id) minid,MAX(ID) maxid
FROM (
SELECT ID,ID - ROW_NUMBER() OVER(ORDER BY ID) rn
FROM T
)t1
group by rn
)
SELECT (CASE WHEN minid = maxid
THEN CAST(maxid AS VARCHAR(50))
ELSE CONCAT(minid,',',maxid)
END) ID
FROM CTE
ORDER BY minid

Results :

|  id |
|-----|
| 1,2 |
| 5 |
| 7,8 |

关于sql - 组顺序整数postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com