Oracle rank()、dense_rank()用法与区别

发布一下 0 0

rank()

返回的数据排名会跳跃;

dense_rank()

返回的数据排名不会跳跃;

示例如下:

创建学生表:

create table t_student(id number ,city_no varchar2(30),city_name varchar2(30),city_type varchar2(30),p_city_no varchar2(30),stu_no varchar2(30),stu_name varchar2(30),stu_grade_no varchar2(30),stu_grade_name varchar2(30),stu_class_no varchar2(30),stu_class_name varchar2(30),exam_time varchar2(30),course varchar2(255),score number, PRIMARY KEY ("ID"));

插入数据:

INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('1', '1001', '福建省', '2', '1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '90');INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('2', '100101', '厦门市', '3', '1001', '202001', '夏依', '1', '三年级', '1', '一班', '202201', '语文', '99');INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('3', '10010101', '思明区', '4', '100101', '202002', '思宁', '1', '三年级', '1', '一班', '202202', '语文', '101');INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('4', '10010102', '湖里区', '4', '100101', '202003', '胡明', '1', '三年级', '1', '一班', '202201', '语文', '111');INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('5', '10010103', '同安区', '4', '100101', '202004', '安然', '1', '三年级', '2', '二班', '202201', '数学', '120');INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('6', '10010104', '集美区', '4', '100101', '202005', '郭美美', '1', '三年级', '1', '一班', '202202', '数学', '103');INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('7', '10010105', '海沧区', '4', '100101', '202006', '李沧海', '1', '三年级', '1', '一班', '202202', '英语', '50');INSERT INTO "TEST"."T_STUDENT" ("ID", "CITY_NO", "CITY_NAME", "CITY_TYPE", "P_CITY_NO", "STU_NO", "STU_NAME", "STU_GRADE_NO", "STU_GRADE_NAME", "STU_CLASS_NO", "STU_CLASS_NAME", "EXAM_TIME", "COURSE", "SCORE") VALUES ('8', '10010106', '翔安区', '4', '100101', '202007', '李翔', '1', '三年级', '2', '二班', '202202', '英语', '90');
Oracle rank()、dense_rank()用法与区别

oracle原始数据

根据分数排名:

select stu_name,       score ,       rank() over(order by score ) rank,       dense_rank() over(order by score ) dense_rank,       row_number() over(order by score ) row_number  from T_STUDENT ;

结果

Oracle rank()、dense_rank()用法与区别

oracle rank

版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除

本文地址:http://0561fc.cn/99620.html