SQL 查询以根据批量大小获取开始和结束位置

SQL query to get start and end positions based on batch size

我有一个 table A,其标识列作为 PK,以及其他列。这个 table 有大约 1000 万条记录。识别列中的示例数据如下

ID
--
1
2
3
5
6
7
8
9
10

注意:没有4,应该会被删除。

我想批量处理它们并跟踪处理是否完成。所以我想创建另一个 table 具有以下结构

批次id、开始id、结束id

因为想要这样的数据

batch id, start Id, end Id
1,1, 2  
2,3,5
3,6,7
4,8,9
5,10,10

这是考虑批量大小为 2。批量大小是可配置的。

我应该通过查询 table A.

在上面的表格 table 中写什么查询

提前致谢。

你可以使用row_number()和算术:

select floor((seqnum + 1) / 2) as batch, min(id), max(id)
from (select t.*, row_number() over (order by id) as seqnum
      from t
     ) t
group by floor((seqnum + 1) / 2)