暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 分析函数RANK() vs. DENSE_RANK()

askTom 2018-03-05
452

问题描述

嗨,我对分析函数RANK() 和DENSE_RANK() 有一个非常简单的问题。
你能告诉我一个真实的情况,当我们使用 “RANK(),为什么不DENSE_RANK()”,反之亦然。除了学生排名计算之外。提前谢谢。

专家解答

Dense_rank总是分配连续的值。

排名给出 “奥林匹克排名”。因此,当许多行具有相同的值时,下一个后值将从第n行开始:

update hr.employees
set    salary = 7000
where  department_id = 100
and    salary <= 7800;

select salary, 
       rank() over (order by salary) rk, 
       dense_rank() over (order by salary) dr
from   hr.employees
where  department_id = 100;

SALARY   RK   DR   
    7000    1    1 
    7000    1    1 
    7000    1    1 
    8200    4    2 
    9000    5    3 
   12008    6    4 


康纳在此视频中进一步讨论了这一点:


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论