Oracle 中的 LISTAGG 查询分批拆分

LISTAGG query in Oracle split in batches

我想在 Oracle 数据库 (19.3) 中获取按模式分组的表列表并批量拆分表列表。

示例: 我有 10 个属于 HR 模式的表(A、B、C、D、E、F、G、H、I、J)。 通过我的查询,我得到了这个输出 Select Schema, LISTAGG(Table_Name) FROM SchemaInfo GROUP BY Schema

架构 表格
人力资源 A,B,C,D,E,F,G,H,I,J

我想将组分成 5 个元素的批次并得到这样的输出:

架构 表格
人力资源 A,B,C,D,E
人力资源 F,G,H,I,J

有什么方法可以得到这个输出吗? SQL 我有类似的东西,但在 Oracle 中没有使用相同的方法。

可能有更简单的方法,但这是我用 all_tables:

做的一个例子
select owner, listagg(table_name, ',') 
from (
    select owner, table_name, floor(row_number() over (partition by owner order by table_name)/5) as batch
    from all_tables)
group by owner, batch
order by owner, batch

用你的table,它看起来像:

select Schema, listagg(table_name, ',') as Tables
from (
    select Schema, table_name, floor(row_number() over (partition by Schema order by table_name)/5) as batch
    from SchemaInfo)
group by Schema, batch
order by Schema, batch