首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区分函数 ROW_NUMBER(), RANK(), and DENSE_RANK()

今天给大家推送第一篇SQL文章《辨析函数 ROW_NUMBER(), RANK(), and DENSE_RANK() 》,接下来所讨论的全部内容都是基于ORACLE数据库 其实这三个函数的区别很容易记住...() OVER(ORDER BY ref_var) as rank, DENSE_RANK() OVER(ORDER BY ref_var) as dense_rank FROM refer_tableORDER...BY 1, 2 得到下面的结果 ref_var row_number rank dense_ranka 1 1 1 a 2 1 1 a 3...(), and DENSE_RANK() 区别做如下总结: row_number ()在进行排序的时候,针对相同的元素,会赋予不同的序号值,且序号值是唯一不重复并且是连续的。...3. dense_rank()排序的时候,针对相同元素(a,a,a),会赋予相同的序号值1, 紧接着对元素b赋值是2,也就是序号值是连续可重复的。

68830
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…

    若两行序数为1,则没有序数2,序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃。...SAMPLE:下例中计算每个员工按部门分区再按薪水排序,依次出现的序列号(注意与DENSE_RANK函数的区别) DENSE_RANK 功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行...同样值的行得到同样的数字序号(认为null时相等的)。...DENSE_RANK() OVER (ORDER BY salary) AS DENSE_RANK_ORDER FROM employees 代码如下: SELECT department_id...DENSE_RANK_PART_ORDER FROM employees FIRST 功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录

    80110

    Oracle-分析函数之排序值rank()和dense_rank()

    概述 ORACLE函数系列: Oracle常见函数大全 Oracle-分析函数之连续求和sum(…) over(…) Oracle-分析函数之排序值rank()和dense_rank() Oracle-...] order_by_clause ) 【功能】聚合函数RANKdense_rank 主要的功能是计算一组数值中的排序值。...【参数】dense_rankrank()用法相当 【区别】dence_rank在并列关系是,相关等级不会跳过。...rank则跳过. rank()是跳跃排序,两个第二名时接下来就是第四名(同样是在各个分组内) dense_rank()l是连续排序,两个第二名时仍然跟着第三名。...---- dense_rank() dense_rankrank()用法相当,但是一个区别:dence_rank在并列关系是,相关等级不会跳过。rank则跳过.

    59820

    sql 四大排名函数—(ROW_NUMBER、RANKDENSE_RANK、NTILE)简介

    2.RANK() 定义:RANK()函数,顾名思义排名函数,可以对某一个字段进行排名,这里为什么和ROW_NUMBER()不一样那,ROW_NUMBER()是排序,当存在相同成绩的学生时,ROW_NUMBER...RANK()是 1 2 2,而ROW_NUMBER()则还是1 2 3,这就是RANK()和ROW_NUMBER()的区别了 3.DENSE_RANK() 定义:DENSE_RANK()函数也是排名函数...,和RANK()功能相似,也是对字段进行排名,那它和RANK()到底什么不同那?...看例子: 实例: DENSE_RANK()密集的排名他和RANK()区别在于,排名的连续性,DENSE_RANK()排名是连续的,RANK()是跳跃的排名,所以一般情况下用的排名函数就是RANK()。...4.NTILE() 定义:NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组编号,编号从1开始,就像我们说的’分区’一样 ,分为几个区,一个区会有多少个。

    4.3K20

    MySQL实现Oracle rank()排序

    本文链接:https://blog.csdn.net/u014427391/article/details/100898845 一、Oracle写法介绍 MySQL5.7版本没有提供类似Oracle的分析函数...,比如开窗函数over(…),oracle开窗函数over(…)使用的话一般是和order、partition by、row_number()、rank()、dense_rank()几个函数一起使用,具体的用法可以参考我之前的博客...所以网上这种写法也是值得学习的,一种是利用了mysql的执行计划执行顺序对临时变量进行赋值,然后再用临时变量进行叠加,写法还是值得学习的 对于临时变量的知识点,可以参考我之前博客:MySQL变量学习笔记...MySQL实现的效果: ? Oracle实现的效果: ?...所以,对于Oracle rank()、row_number加上开窗函数进行排序,并没有partition by分组的时候,是可以用这种方法,不过写法要改一下,代码如: SELECT /* IF(

    1.1K40

    MySQL系列之实现Oracle rank()排序

    一、Oracle写法介绍 MySQL5.7版本没有提供类似Oracle的分析函数,比如开窗函数over(…),oracle开窗函数over(…)使用的话一般是和order、partition by、row_number...()、rank()、dense_rank()几个函数一起使用,具体的用法可以参考我之前的博客oracle开窗函数用法简介 假如要获取成绩排序第一的学生信息,可以用如下的SQL: select * from...) over(partition by classId order by score desc) rn from t_score) where rn = 1; 二、Oracle和MySQL...的执行计划执行顺序对临时变量进行赋值,然后再用临时变量进行叠加,写法还是值得学习的 对于临时变量的知识点,可以参考我之前博客:MySQL变量学习笔记 注意:这里网上有很多这种写法,不过我验证了,并不能实现了...所以,对于Oracle rank()、row_number加上开窗函数进行排序,并没有partition by分组的时候,是可以用这种方法,不过写法要改一下,代码如: SELECT /* IF(

    55010

    SQL进阶-3-排序与窗口函数

    SQL进阶-3-排序和窗口函数 在使用数据库制作各种统计数据的时候,需要对数据进行排序,比如按照分数、销量、人数等数值进行排序,通常排序的方法两种: 跳过之后的位次排序 不跳过之后的位次排序 ?.../row_number 实例 rank:并列跳跃排名 dense_rank:并列连续排名 row_number:连续排名 这3个函数的区别通过一个列子可以清楚地看到: ?...select name,price, rank() over (order by price desc) as rank_1, dense_rank() (order by price desc)...非等值连接实现dense_rank() mysql> select p1.name, p1.price, (select count(distinct p2.price) from products...使用变量实现row_number() 在MySQL5.7.28中实现变量实现row_number函数的功能 mysql> select p.name, p.price, (@pro_rank := @pro_rank

    84120
    领券