您现在的位置:主页 > 技术中心 > 数据库技术

Oracle 分级函数

来源:学习笔记 责任编辑:admin 发表时间:2013-07-01 10:55 点击:

1. rank()对表中的数据进行分级排序.
譬如有张学生成绩统计单的表STUDENT_RESULT
name number kemu fenshu
li 0113101 高数 90
zhang 0113098 高数 80
wang 0113077 高数 70
li 0113101 物理 80
zhang 0113098 物理 90
wang 0113077 物理 70

我如果要检索出表中高数的前两名和物理的前两名
那么可以通过使用 RANK()方法达到目的

--首先 通过kemu进行分类,然后按照fenshu降序排序

  1. select rank() over(partition by kemu order by fenshu desc) rk,t.* from student_result t 
结果 rk name number kemu fenshu 1 li 0113101 高数 90 2 zhang 0113098 高数 80 3 wang 0113077 高数 70 1 zhang 0113098 物理 90 2 li 0113101 物理 80 3 wang 0113077 物理 70 --然后,检索出rk<=2的记录,即取出前两名
  1. select * from (select rank() over(partition by kemu order by fenshu desc) rk,t.* from student_result t) as y where y.rk<=2; 


结果
rk name number kemu fenshu
1 li 0113101 高数 90
2 zhang 0113098 高数 80
1 zhang 0113098 物理 90
2 li 0113101 物理 80

dense_rank()和 rank()的用法完全相同,不同的是在出现分数相同的情况下

name number kemu fenshu
li 0113101 高数 80
zhang 0113098 高数 80
wang 0113077 高数 70
li 0113101 物理 80
zhang 0113098 物理 90
wang 0113077 物理 70
 

  1. select rank() over(order by fenshu desc) rk,t.* from student_result t 


的结果为
rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高数 80
2 zhang 0113098 高数 80
2 li 0113101 物理 80
5 wang 0113077 高数 70
5 wang 0113077 物理 70

  1. select dense_rank() over(order by fenshu desc) rk,t.* from student_result t 


结果为
rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高数 80
2 zhang 0113098 高数 80
2 li 0113101 物理 80
3 wang 0113077 高数 70
3 wang 0113077 物理 70

附 row_number()的使用
 

  1. select row_number() over(order by fenshu desc) rk,t.* 

      相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      评价:
      表情:
      用户名: 验证码:点击我更换图片

      推荐热点

      • SQL注入攻击及其防范检测技术研究
      • Sql-Server应用程序的高级Sql注入
      • 学生信息管理系统数据库原理课程设计报告
      • 经验总结:登录和优化IBM DB2的执行速度
      • MySQL服务器的启动与停止
      • 浅谈数据库的接口技术
      • 学习数据库知识之 SQL 操作标记
      • 如何在SQL Server和MySql中创建临时表
      • 有关Sybase系统的数据同步与复制问题
      ?? - ?? - ÝřŝžľŘÝź - TAGąęÇŠ - RSSśŠÔÄ - ??
      Copyright © 2004-2024 上海卓卓网络科技有限公司