You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写Oracle SQL实现有序唯一数值分块并获取各块最值

Oracle SQL实现按固定行数拆分数据并获取块内最值

要将已排序的唯一数值按每25000条拆分,并获取每个块的最小、最大值,可借助Oracle的窗口函数和分组聚合实现:

核心SQL代码

WITH sorted_data AS (
    SELECT unique_num,
           ROW_NUMBER() OVER (ORDER BY unique_num) AS rn
    FROM (
        -- 替换为你的原始查询,需返回已排序的唯一数值列
        SELECT DISTINCT target_column AS unique_num
        FROM your_table
        ORDER BY target_column
    ) raw_data
)
SELECT CEIL(rn / 25000) AS Chunk,
       MIN(unique_num) AS Min,
       MAX(unique_num) AS Max
FROM sorted_data
GROUP BY CEIL(rn / 25000)
ORDER BY Chunk;

代码说明

  1. sorted_data公共表表达式:先通过子查询获取你需要的唯一排序数值,再用ROW_NUMBER()给每条数据按排序顺序分配连续序号,确保每一行有对应的位置标记。
  2. 主查询逻辑:
    • 用CEIL(rn / 25000)计算每条数据所属的块编号,每25000条为一个块,最后不足25000条的自动归入最后一块。
    • 按块编号分组后,用MIN()和MAX()分别提取每个块的最小和最大值,最后按块号升序排列结果。

示例验证

当你的数据是1到110000的连续唯一数值时,执行上述查询会得到如下结果:

ChunkMinMax
1125000
22500150000
35000175000
475001100000
5100001110000

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:15:34