根据结果​​计数拆分查询结果

时间:2012-10-02 16:34:56

标签: sql oracle oracle10g oracle11g

我有一个基于基本标准的查询,它会在任何一天返回X个记录。

我正在尝试检查基本查询的结果,然后根据X的总数对其应用百分比拆分并将其拆分为2个存储桶。每个存储桶将占X中返回的总查询结果的百分比。

例如:

  • 查询A返回3500条记录。

  • 如果从查询A返回的记录数为< = 3000,则将3500条记录拆分为40%/ 60%分割(1,400 / 2,100)。

  • 如果从查询A返回的记录数为> = 3001且< = 50,000,则将记录拆分为10%/ 90%split.Etc。等等。

  • 我想要返回实际记录,而不仅仅是记录中的数学,它返回一行中带有数字的行(在列中)。

1 个答案:

答案 0 :(得分:4)

我不确定您希望如何显示生成的行集的不同部分,因此我刚刚在包含值{{1}的结果行集中添加了其他列(part) }表示该行属于第一部分,1 - 第二部分。

2

Demo #1行数3000。 Demo #2行数3500.

为了更好的可用性,您可以使用上面的查询创建视图,然后按select z.* , case when cnt_all <= 3000 and cnt <= 40 then 1 when (cnt_all between 3001 and 50000) and (cnt <= 10) then 1 else 2 end part from (select t.* , 100*(count(col1) over(order by col1) / count(col1) over() )cnt , count(col1) over() cnt_all from split_rowset t order by col1 ) z 列查询该视图过滤。

Demo #3使用视图。