问题陈述:

您想要分配一个数字/等级来表示其在结果中的位置。

解:

Oracle提供了RANK分析功能,可以为结果集中的行生成排名号。为了说明这一点,我们将从收费的高低开始对学生进行排名。以下SELECT语句使用rank函数分配这些值。

示例SELECT student_id,

first_name,

last_name,

fees,

RANK() OVER (ORDER BY fees DESC) AS rnk

FROM students;

输出结果学生卡名字姓费用nk

100史密斯詹姆士240001

101约翰逊约翰170002

102威廉斯罗伯特170002

108罗德里格斯约瑟夫120084

103棕色迈克尔90005

109威尔逊托马斯90005

110马丁尼兹克里斯托弗82007

112泰勒保罗78008

111安德森丹尼尔77009

113托马斯标记690010

104琼斯威廉600011

105磨坊主大卫480012

106戴维斯理查德480012

107加西亚查尔斯420014

RANK的行为与任何其他分析功能相似,一旦非分析处理完成,将对结果集进行第二遍操作。在上述SQL中,结果按费用降序处理,并从1开始计算结果的等级值。

一对费用相似的学生12008年的排名为4。这被称为稀疏排名,其中相同的值排名相同。根据您的要求,这可能不是理想的结果,因为缺少几个职级。

稀疏排名的另一种方法称为密集排名。我们将使用density_rank函数观察结果。

示例SELECT student_id,

first_name,

last_name,

fees,

dense_rank() OVER (ORDER BY fees DESC) AS rnk

FROM students

输出结果学生卡名字姓费用nk

100史密斯詹姆士240001

101约翰逊约翰170002

102威廉斯罗伯特170002

108罗德里格斯约瑟夫120083

103棕色迈克尔90004

109威尔逊托马斯90004

110马丁尼兹克里斯托弗82005

112泰勒保罗78006

111安德森丹尼尔77007

113托马斯标记69008

104琼斯威廉60009

105磨坊主大卫480010

106戴维斯理查德480010

107加西亚查尔斯420011

现在,我们可以看到缺少的连续等级值。

数据准备:用于该问题的数据如下所示。

示例DROP TABLE students;

COMMIT;

CREATE TABLE students

( student_id     NUMBER(6)

, first_name     VARCHAR2(20)

, last_name      VARCHAR2(25)

, email          VARCHAR2(40)

, phone_number   VARCHAR2(20)

, join_date      DATE

, class_id       VARCHAR2(20)

, fees           NUMBER(8,2)

, professor_id   NUMBER(6)

, department_id  NUMBER(4)

) ;

示例CREATE UNIQUE INDEX stu_id_pk ON students (student_id) ;

INSERT INTO students VALUES (100,'SMITH','JAMES','SMITH.JAMES@notreal.com','111.111.1245',TO_DATE('17-06-2003','DD-MM-YYYY'),'INS_CHAIRMAN',24000,NULL,NULL);

INSERT INTO students VALUES (101,'JOHNSON','JOHN','JOHNSON.JOHN@notreal.com','111.111.1246',TO_DATE('21-09-2005','DD-MM-YYYY'),'INS_VP',17000,100,90);

INSERT INTO students VALUES (102,'WILLIAMS','ROBERT','WILLIAMS.ROBERT@notreal.com','111.111.1247',TO_DATE('13-01-2001','DD-MM-YYYY'),'INS_VP',17000,100,90);

INSERT INTO students VALUES (103,'BROWN','MICHAEL','BROWN.MICHAEL@notreal.com','111.111.1248',TO_DATE('03-01-2006','DD-MM-YYYY'),'INS_STAFF',9000,102,60);

INSERT INTO students VALUES (104,'JONES','WILLIAM','JONES.WILLIAM@notreal.com','111.111.1249',TO_DATE('21-05-2007','DD-MM-YYYY'),'INS_STAFF',6000,103,60);

INSERT INTO students VALUES (105,'MILLER','DAVID','MILLER.DAVID@notreal.com','111.111.1250',TO_DATE('25-06-2005','DD-MM-YYYY'),'INS_STAFF',4800,103,60);

INSERT INTO students VALUES (106,'DAVIS','RICHARD','DAVIS.RICHARD@notreal.com','111.111.1251',TO_DATE('05-02-2006','DD-MM-YYYY'),'INS_STAFF',4800,103,60);

INSERT INTO students VALUES (107,'GARCIA','CHARLES','GARCIA.CHARLES@notreal.com','111.111.1252',TO_DATE('07-02-2007','DD-MM-YYYY'),'INS_STAFF',4200,103,60);

INSERT INTO students VALUES (108,'RODRIGUEZ','JOSEPH','RODRIGUEZ.JOSEPH@notreal.com','111.111.1253',TO_DATE('17-08-2002','DD-MM-YYYY'),'CL_PHY',12008,101,100);

INSERT INTO students VALUES (109,'WILSON','THOMAS','WILSON.THOMAS@notreal.com','111.111.1254',TO_DATE('16-08-2002','DD-MM-YYYY'),'CL_MATH',9000,108,100);

INSERT INTO students VALUES (110,'MARTINEZ','CHRISTOPHER','MARTINEZ.CHRISTOPHER@notreal.com','111.111.1255',TO_DATE('28-09-2005','DD-MM-YYYY'),'CL_MATH',8200,108,100);

INSERT INTO students VALUES (111,'ANDERSON','DANIEL','ANDERSON.DANIEL@notreal.com','111.111.1256',TO_DATE('30-09-2005','DD-MM-YYYY'),'CL_MATH',7700,108,100);

INSERT INTO students VALUES (112,'TAYLOR','PAUL','TAYLOR.PAUL@notreal.com','111.111.1257',TO_DATE('07-03-2006','DD-MM-YYYY'),'CL_MATH',7800,108,100);

INSERT INTO students VALUES (113,'THOMAS','MARK','THOMAS.MARK@notreal.com','111.111.1258',TO_DATE('07-12-2007','DD-MM-YYYY'),'CL_MATH',6900,108,100);

COMMIT;

oracle中查询实现以下结果,如何在Oracle中为查询结果分配等级?相关推荐

  1. html中写自增数字,WPS word中数字怎么自增 如何在word中设置数字的千位分隔符

    选中某行,列或者某一部分,选择菜单栏的"行和列"->"填充"选项,选择序列选项. 在弹出的窗口中设置你需要的选项. WPS文字怎样自动增加数字 如何在WP ...

  2. oracle竖线分隔符文件导入6,如何在sqlldr中倒入多字符分隔符文件

    如何在sqlldr中倒入多字符分隔符文件 今天有朋友询问: 我们...应用系统很多,它们之间要交换很多数据,目前是以文本方式交换,问题是文本的分隔符号是(|+|),为三个字符,主要是避免数据的混淆.. ...

  3. python中列表长度查询,从零开始学Python|如何在Python中查找列表的长度?

    Python中的列表是有序且可更改的集合数据类型.列表也可以有重复的条目.所述的PythonLEN()方法被用于找到任何对象的长度.在本文中,我们将按以下顺序学习如何在python中查找列表的长度: ...

  4. shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?

    每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...

  5. html中看到php代码_如何在HTML中嵌入PHP代码

    如何在HTML中嵌入PHP代码 对于一个有经验的 PHP Web 开发者,在HTML中嵌入PHP代码是一件非常容易的事情.但是对于刚开始接触 PHP 编程语言的新手这就是一个问题.下面是小编为大家带来 ...

  6. 在dw中如何调试html代码,如何在 Dreamweaver 中优化和调试代码 - Dreamweaver 用户指南...

    了解如何在 Dreamweaver 中清除代码.检查浏览器兼容性.验证 XML 文档并使页面符合 XHTML 规范. 清理代码 您可以自动删除空标签,合并嵌套 font 标签,以及通过其它方法改善杂乱 ...

  7. ai中如何插入签名_如何在PDF中插入一个或多个空白页?

    在编辑或修改PDF文档时,一般都需要新增空白页后再添加文本或图片等内容,那么如何在PDF中插入一个或多个空白页呢? 首先打开极速PDF编辑器,或打开需要编辑的PDF文档后,点击右上角"文档& ...

  8. eval在python中是什么意思_如何在Python中使用eval ?

    Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...

  9. python中while语句是_如何在Python中使用while语句[适合初学者]

    while语句是重复循环的语句,那么如何用Python编写,下面Gxl网就带领大家来学习一下Python中使用while语句.[推荐阅读:Python视频教程] 一:什么是while语句?Python ...

  10. thinkphp中如何使用PHP函数,如何在ThinkPHP中使用函数进行回调

    如何在ThinkPHP中使用函数进行回调 发布时间:2020-12-23 15:11:45 来源:亿速云 阅读:85 作者:Leah 本篇文章为大家展示了如何在ThinkPHP中使用函数进行回调,内容 ...

最新文章

  1. 【Caffe实践】基于Caffe的人脸识别实现
  2. ubuntu 挂载新硬盘
  3. 【DP优化】【P1430】序列取数
  4. _Linux实操-实用指令
  5. Frobenius norm(Frobenius 范数)
  6. 华为内部存储转sd卡_华为tit al00怎么将手机存储内容转移到sd卡
  7. 【Vue】父子组件的传值(父组件-->子组件、子组件-->父组件)
  8. DOS下常用命令大集合
  9. 走全渠道电商O2O模式的优势体现在哪些地方?
  10. mov和mp4格式哪个好_公文需带附件时,标准的格式排布
  11. 凤姐的原创诗歌 思想的悲哀
  12. [教程] 如何复活一个完全死机的联发科设备
  13. opencv中 idft与 mathlab中 ifft2结果不对应的解决方案
  14. 微信 php 地图定位,微信公众号定位地图位置写入数据库,再显示地图的方法
  15. 点云分割训练哪家强?监督,弱监督,无监督还是半监督?
  16. Upload labs
  17. drawable-(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的区别以及联系
  18. 使用百度网盘上传大文件到云服务器
  19. 滴水逆向学习总结第二期
  20. 动态规划——钢管切割最小代价问题

热门文章

  1. html 最小长度单位,html见长度单位尺寸单�?CSS布局HTML
  2. macOS Big Sur 11当前存在的一些问题(更新中)
  3. MYSQL无限级分类表设计及自我连接
  4. 后端学 Angular 2 —— 组件间通信
  5. javascript鼠标拖拽的那些事情
  6. 数据处理python
  7. CCF-CSP认证历年真题详解
  8. 基础编程题目集 6-7 统计某类完全平方数 (20 分)
  9. 二分答案——砍树(洛谷 P1873)
  10. C语言课后习题(19)