ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 分析函数

oracle 分析函数

原创 Linux操作系统 作者:jimhou 时间:2019-06-29 12:27:05 0 删除 编辑

数据库分析函数 rank()和dense_rank()


开发人员想统计不同机构中排名靠前的ID号,通过使用rank()和dense_rank函数可以帮助解决此类问题.

数据库现有数据

JG_ID ID BAL
---------- ---------- ----------
1 1 555.34
1 2 323.34
1 5 523.34
1 7 3333.34
2 1 123.34
2 2 323.34
2 5 523.34
2 7 2222.34
1 9 555.34

查出每个jg_id组,余额前3名ID.

select * from (select rank() over(partition by jg_id order by bal desc) bba,jg.* from jg) t where t.bba<=3

BBA JG_ID ID BAL
---------- ---------- ---------- ----------
1 1 7 3333.34
2 1 1 555.34
2 1 9 555.34
1 2 7 2222.34
2 2 5 523.34
3 2 2 323.34

使用dense_rank函数可以防止有排名一样的数据挤掉其他数据.

select * from (select dense_rank() over(partition by jg_id order by bal desc) bba,jg.* from jg) t where t.bba<=3

BBA JG_ID ID BAL
---------- ---------- ---------- ----------
1 1 7 3333.34
2 1 1 555.34
2 1 9 555.34
3 1 5 523.34
1 2 7 2222.34
2 2 5 523.34
3 2 2 323.34

可以看到使用了dense_rank后,第三名的数据才显示出来.

Oracle还有大量的分析函数,需要进行探索.

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

上一篇: 数据库安全
请登录后发表评论 登录
全部评论

注册时间:2002-08-15

  • 博文量
    34
  • 访问量
    31430