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)
我有一个 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)