Rank,Dense_rank,Row_number函数区别用法

原创 2016年08月31日 09:35:02
select  a.dept_id,a.salary,
        row_number()over (partition by  a.dept_id order by a.salary) ,
        dense_rank()over (partition by  a.dept_id order by a.salary)  ,
        rank()over(partition by  a.dept_id order by a.salary)
from  tb_wyh_user_info  a;



Rank,Dense_rank,Row_number函数为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于当碰到相同数据时的排名策略。

①ROW_NUMBER:
Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
②DENSE_RANK:
Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。
③RANK:

Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。



版权声明:本文为博主原创文章,未经博主允许不得转载。

RANK、DENSE_RANK以及ROW_NUMBER区别

场景 数据库查询中,很多时候都会遇到对数据进行分组,然后组内排序加序号的需求。 应用 对于组内排序一般有三个函数可供使用,它们是RANK()、DENSE_RANK()以及ROW_NUMBER()。它们...
  • hustzw07
  • hustzw07
  • 2016年04月20日 16:54
  • 1223

SQL中ROW_NUMBER()/RANK() /DENSE_RANK() OVER函数的基本用法

转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html
  • biaobiao1217
  • biaobiao1217
  • 2014年11月13日 13:20
  • 2653

oracle中rank() over, dense_rank(), row_number() 的区别

假设现在有一张学生表student,学生表中有姓名、分数、课程编号,现在我需要按照课程对学生的成绩进行排序。 select * from student 1. rank over ()可以实现对...
  • zdp072
  • zdp072
  • 2015年04月16日 15:01
  • 1351

一个SQL语句分清楚RANK(),DENSE_RANK(),ROW_NUMBER()三个排序的不同

在SCOTT用户下,执行下面SQL; SELECT  s.deptno,s.ename,s.sal, RANK() over(partition by s.deptno order by s.sa...
  • S630730701
  • S630730701
  • 2016年07月14日 00:21
  • 6114

hive的row_number()、rank()和dense_rank()的区别以及具体使用

row_number()、rank()和dense_rank()这三个是hive内置的分析函数,下面我们来看看他们的区别和具体的使用案例。 首先创建一个文件test: A,1 B,3 C,2 D,3 ...
  • qq_20641565
  • qq_20641565
  • 2016年10月17日 20:05
  • 2780

postgresql rank() over, dense_rank(), row_number() 的区别

引原文如下学生表student,学生表中有姓名、分数、课程编号,需要按照课程对学生的成绩进行排序select * from jinbo.student; id | name | score | c...
  • u011944141
  • u011944141
  • 2017年12月29日 02:54
  • 197

Hive ROW_NUMBER,RANK(),DENSE_RANK()

Hive ROW_NUMBER,RANK(),DENSE_RANK() 准备数据 浙江,杭州,300 浙江,宁波,150 浙江,温州,200 浙江,嘉兴,100 江苏,南京...
  • AnneQiQi
  • AnneQiQi
  • 2016年08月08日 20:03
  • 873

Hive分析窗口函数之NTILE,ROW_NUMBER,RANK和DENSE_RANK

继续介绍几个序列函数: NTILE,ROW_NUMBER,RANK和DENSE_RANK 环境信息: Hive版本为apache-hive-0.14.0-bin Hadoop版本为hadoop-2...
  • jiangshouzhuang
  • jiangshouzhuang
  • 2016年04月04日 16:34
  • 1941

排名函数(ROW_NUMBER、RANK、DENSE_RANK)及OVER子句

--在部门内新水排名(如果有相同名次,用dense_rank) SELECT row_number() over (PARTITION BY t.deptno  --按部门分组 ORDER BY...
  • mine3333
  • mine3333
  • 2015年12月07日 15:48
  • 671

MySQL 下 ROW_NUMBER / DENSE_RANK / RANK 的实现

来自:http://blog.sina.com.cn/s/blog_562b10b901011c17.html CREATE TABLE test_rownum ( ID int, Ke CHAR...
  • Bryan__
  • Bryan__
  • 2016年05月01日 17:07
  • 2748
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Rank,Dense_rank,Row_number函数区别用法
举报原因:
原因补充:

(最多只允许输入30个字)