【发布时间】:2018-02-05 07:12:51
【问题描述】:
我正在尝试找到一种在单个查询中使用分析函数的方法。这是我的问题:
我的数据:基于相似性记录被预先组织成 SET(如下所示)。
我的目标:我正在尝试将集合随机分组,以便尽可能使来自同一 SET 的记录不在同一组中。
例如:
什么效果好:
下面是我的代码,它似乎完美地满足了我的要求。
/**** First update set wise row num ****/
insert into my_set_stage_1
select text,
set,
row_number() over(partition by set order by text) as set_sequence
from my_set;
/**** Next add to group using NTILE ****/
insert into my_set_stage_2
select text,
set,
set_sequence,
ntile(10) over(order by set_sequence) as group_id
from my_set_stage_1 s;
我的问题:
我的实际数据量很大。如您所见,我使用 2 个中间表 = 2 个大查询。是否可以使用分析函数在单个查询中设置 group_id?
任何帮助表示赞赏。
【问题讨论】:
标签: sql oracle performance