我想对按数字索引的成员列表进行简单查询,并将它们分组到相同大小的“桶”中。所以基本查询是:
select my_members.member_index from my_members where my_members.active=1;
假设我得到了 1000 个成员索引号,现在我想通过最大和最小成员索引将它们分成 10 个大小相等的组。就像是:
0 到 400 中的活跃成员:100 401 到 577 中的活跃成员:100 ... 1584 到 1765 中的活跃成员:100
我能想到的最好的办法是重复查询 max(my_members.member_index) 并增加 rownum 限制:
for r in 1 .. 10 loop
select max(my_members.member_index)
into ranges(r)
from my_members
where my_members.active = 1
and rownum < top_row
order by my_members.member_index asc;
top_row := top_row + 100;
end loop;