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

Sql 根据结果计数拆分查询结果,sql,oracle,oracle10g,oracle11g,Sql,Oracle,Oracle10g,Oracle11g,我有一个基于基本条件的查询,它将在任何给定的一天返回X个记录 我试图检查基本查询的结果,然后根据X的总和对其应用百分比分割,并将其分割为2个桶。每个bucket将占X中返回的总查询结果的百分比 例如: 查询A返回3500条记录 如果查询A返回的记录数为=3001且我不确定您希望如何显示结果行集的不同部分,因此我只添加了额外的列(part)在结果行集合中,包含值1,指示该行属于第一部分和2-第二部分 select z.* , case when cnt_all &

我有一个基于基本条件的查询,它将在任何给定的一天返回X个记录

我试图检查基本查询的结果,然后根据X的总和对其应用百分比分割,并将其分割为2个桶。每个bucket将占X中返回的总查询结果的百分比

例如:

  • 查询A返回3500条记录


  • 如果查询A返回的记录数为=3001且我不确定您希望如何显示结果行集的不同部分,因此我只添加了额外的列(
    part
    )在结果行集合中,包含值
    1
    ,指示该行属于第一部分和
    2
    -第二部分

    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
    
    选择z*
    案例
    你什么时候知道