【问题标题】:SQL to split result in chunksSQL将结果分成块
【发布时间】:2023-02-16 23:35:17
【问题描述】:

我在编写 Oracle SQL 查询以实现以下目标方面需要帮助。 假设我有一个查询返回大约 110,000 个排序的唯一数字值,从 1 到 110,000 不是必需的,可以是任何唯一数字而不是连续的。我想将它们分成 25,000 个块,最后一个块包含其余部分,在此示例中为 10,000 个。并获取每个块的最小值和最大值。 提前致谢。

约翰·T。

对于此示例,我希望有 5 个块以及每个块的最小值和最大值。 让我们假设这些数字是从 1 到 110,000: 块最小最大 1 1 25,000 2 25,001 50,000 3 50,001 75,000 4 75,001 100,000 5 100,001 110,000

【问题讨论】:

  • 你的表有标识列吗?如果不是,您可以查看 oracle 是否支持 row_number 功能。

标签: sql oracle plsql split count


【解决方案1】:

例如

with tbl as (
   /* sample data */
   select round(dbms_random.value() * 1000000) n
   from dual
   connect by level <= 110000
)
select chunk_no, count(*) cnt, min(n), max(n)
from (
   select n, floor((row_number() over(order by n) - 1) / 25000) chunk_no
   from tbl
)
group by chunk_no
order by chunk_no

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 2013-04-23
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2018-07-25
    相关资源
    最近更新 更多