Oracle分组排序后取前百分之N(每个分组)

    

select empno, ename, deptno, sale
  from (select empno,
               ename,
               sale,
               deptno,
               row_number() over(partition by deptno order by sale desc nulls last) as r_num,
               count(*) over(partition by deptno) as n_rows
          from emp)
 where r_num <= round(n_rows * &n / 100)
 order by deptno, sale desc;

    参考了博客https://community.oracle.com/thread/2539806?tstart=0,本人抛砖引玉,欢迎提出更好的方法,如有错误也请指出。谢谢

    全文完

猜你喜欢

转载自53873039oycg.iteye.com/blog/2054286