ITPub博客

首页 > 数据库 > Oracle > 取每个分组的前若干名

取每个分组的前若干名

原创 Oracle 作者:壹頁書 时间:2014-04-14 22:52:37 0 删除 编辑
以Oracle hr模式的employees表为例。
查询每个部门收入最多的前三个人。

实验数据初始化:
  1. create table test as select * from hr.employees;
方法一:
  1. select department_id,last_name,salary
  2. from test t1
  3. where
  4. (
  5.     select count(*) from test t2 
  6.     where t2.department_id=t1.department_id and t1.salary<t2.salary
  7. 3 order by department_id,salary desc;
增加索引


方法二:(Oracle分析函数)

  1. select department_id,last_name,salary from
  2. (
  3.     select department_id,last_name,salary,
  4.     row_number() over(partition by department_id order by salary desc)
  5.     from test
  6. ) where r<=3;



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-1142071/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 数据文件迁移
请登录后发表评论 登录
全部评论

注册时间:2013-10-19

  • 博文量
    621
  • 访问量
    6006367