我有一张这样的桌子
id |
---|
1 |
2 |
4 |
5 |
6 |
10 |
11 |
一组连续的值,未知数量的缺失字段,然后是其他连续的值.
id | stint |
---|---|
1 | 0 |
2 | 0 |
4 | 1 |
5 | 1 |
6 | 1 |
10 | 2 |
11 | 2 |
每次递增一次,我就可以用它对其他列求和.
我有一张这样的桌子
id |
---|
1 |
2 |
4 |
5 |
6 |
10 |
11 |
一组连续的值,未知数量的缺失字段,然后是其他连续的值.
id | stint |
---|---|
1 | 0 |
2 | 0 |
4 | 1 |
5 | 1 |
6 | 1 |
10 | 2 |
11 | 2 |
每次递增一次,我就可以用它对其他列求和.
如果你的MySQL版本支持窗口功能.
您可以try 在子查询中使用LAG
窗口函数来获取之前的id
列,然后使用SUM
条件聚合窗口函数.
Query #1
SELECT Id,
SUM(id - n_Id > 1) OVER(ORDER BY id) stint
FROM (
SELECT *,LAG(id,1,id) OVER(ORDER BY id) n_Id
FROM T
) t1
Id | stint |
---|---|
1 | 0 |
2 | 0 |
4 | 1 |
5 | 1 |
6 | 1 |
10 | 2 |
11 | 2 |