sql - 如何打破序列
问题描述
我有一个名为sequence的表,其中有一列val和表看起来像
val
-----
1
2
3
5
8
9
10
如果序列中有中断并输出,我需要确定数字范围
range_start range_end
----------- ----------
1 3
5 5
8 10
解决方案
减去一个递增的序列,您将得到一个序列值的常数。然后聚合:
select min(val), max(val)
from (select val, row_number() over (order by val) as seqnum
from t
) t
group by (val - seqnum);
推荐阅读
- spring - Spring Data R2DBC中查询参数的日志值?
- python - 视觉上两个python列表的不同顺序?
- php - 如何在 CodeIgniter 中为通用任务实现观察者模式
- html - Photoshop 中的像素大小与 CSS 不同
- c++ - c++克隆类对象函数
- api - XERO API Oauth 2.0 用户认证
- f# - Fsharpc 无法生成 fsi 文件
- mongodb - MongoDB 在 WSL 上因“fdatasync:无效参数”而失败
- python - 从 Flask 应用程序获取当前用户并在 Dash 应用程序中使用
- html - 如何使用显示:用css中的按钮正确阻止?