Oracle 您所在的位置:网站首页 oracle中table函数 Oracle

Oracle

#Oracle| 来源: 网络整理| 查看: 265

文章目录 前言介绍demo案例测试测试前的准备rank()dense_rank()row_number()

前言

分析函数在oracle中比较常见,但用的不多,今天有幸碰见,索性做一次使用的总结说明。

介绍

oracle中的分析函数,常见的有下面的三种:

rank() 当排序的数据值是一样的时候,排序相同,但需要跳跃。 什么叫排序跳跃? 如下所示: 在这里插入图片描述

当出现排名一样的时候,排名是一样的,但是如果出现间隔,则排序会出现不一致的现象。

dense_rank() 排序的数据值是一样的时候,排序相同,序号连续。 如何理解上面所说的序号连续? 在这里插入图片描述

row_number() 排序好的数据值一样的时候,排序不同,类似 rownum。 在这里插入图片描述

demo案例测试 测试前的准备

创建表并新增测试数据:

create table XJ_TEST_LTOH ( stuid VARCHAR2(20), stuname VARCHAR2(40), coursename VARCHAR2(40), score INTEGER ) insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201001', '张三', '数学', 40); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201001', '张三', '语文', 50); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201001', '张三', '理综', 120); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201011', '李四', '数学', 40); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201011', '李四', '语文', 45); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201011', '李四', '理综', 120); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201031', '王五', '数学', 54); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201031', '王五', '语文', 50); insert into xj_test_ltoh (STUID, STUNAME, COURSENAME, SCORE) values ('sc202201031', '王五', '理综', 100);

执行后,表中的数据如下所示: 在这里插入图片描述

rank()

值相同,排名相同,序号跳跃

select rank() over(order by score desc) nums ,t.score from xj_test_ltoh t

在这里插入图片描述

dense_rank()

值相同,排名相同,排名序号连续。

select dense_rank() over(order by score desc) nums ,t.score from xj_test_ltoh t

在这里插入图片描述

row_number()

序号连续,即使值相同。

select row_number() over(order by score desc) nums ,t.score from xj_test_ltoh t

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有