gpt4 book ai didi

mysql - 识别连续的行

转载 作者:太空宇宙 更新时间:2023-11-03 12:21:25 25 4
gpt4 key购买 nike

我有一个格式如下的表格:

 cId    seq 
--- ---
A 1
A 2
A 4
A 5
B 8
B 9
A 12
A 13

我想编写一个查询来生成另一个如下所示的表:

 cId    seq    consecutive
--- --- -----------
A 1 1
A 2 1
A 4 2
A 5 2
B 8 3
B 9 3
A 12 4
A 13 4

我想做的是识别具有相同 cId 的连续 seq 值,然后对它们进行编号。

我想用Lag函数确定前一个seq值,然后设置连续的列,但不知道遇到下一个break时如何增加值。

SELECT [cId], 
[Seq],
CASE WHEN [Seq] - 1 = LAG([Seq], 1, [Seq]) OVER ( ORDER BY [Seq]) THEN 1
ELSE 2 END as consecutive
FROM #ConsecutiveData

此查询将在每个序列的开头旁边放置一个 2。这是我最接近的。

最佳答案

我认为作者没有使用 MySQL,因为据我所知,MySQL 中没有 LAG 函数。

以下是 MSSQL 的可能解决方案:

SELECT
cid,
seq,
DENSE_RANK() OVER (ORDER BY seq - row_num) consecutive
FROM (
SELECT
cid,
seq,
ROW_NUMBER() OVER (ORDER BY seq) row_num
FROM
test_table
) data
;

检查 SQLFiddle: SQLFiddle Example

关于mysql - 识别连续的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824509/

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