我现在有一分数列(由高到低),我想取出该列的前30% 怎么取呀? 如果想取出30%-60%的数据又该怎么取呢?哪位高手知道,帮帮忙~ 在线等! 谢谢!

解决方案 »

  1.   

    select *
    from
    (
    select a.*,row_number() over (order by 分数 desc) rn,count(*) over() tot
    from a
    )
    where trunc(100*rn/tot)<=30
    这是30%的where trunc(100*rn/tot)>=30 and trunc(100*rn/tot)<=60
      

  2.   

    30%-60%
    where trunc(100*rn/tot)>=30 and trunc(100*rn/tot) <=60 
      

  3.   

    select perf_sum,employee_type from ( select a.*,row_number() over (order by perf_sum desc) rn,count(*) over() tot from performance_inview a where a.employee_type='1') where  trunc(100*rn/tot) <=30select a.*,row_number() over (order by perf_sum desc) rn,count(*) over() tot from performance_inview a where a.employee_type='1' 这条查询语句我能查询出两条记录, 但上面那条记录为什么一条都没有呀~    
    我想查询出employee_type='1' 的总分数的前30%  呵呵~   employee_type='1'的数据共有两条,都有分数!
    真是麻烦你了, 谢谢!
      

  4.   


    是啊,你那样不是很矛盾么???
    hebo2005好像是专业的数据库专家啊,什么都知道啊,厉害啊
      

  5.   

    hebo好厉害,
    开完会,又没有赶上。