【SQL】排名

问题描述:

 

分析:

一、使用排序函数
 
二、计算

计算排名相当于算前面有多少个大于他,上例若排名是 1 2 2 4 5则直接计算有几个大于他加一就可(本身最高的是第一名,零人大于他)

若是题目要求的排名,则说明重复的都是一个排名,不占用其他排名,则要加一个去重

解题

1、

select emp_no, salary, DENSE_RANK() OVER(order by [salary]desc) as rank
from salaries
where to_date='9999-01-01'
order by salary desc, emp_no

2、

select a.emp_no,a.salary,(select count(distinct b.salary)from salaries b
where b.to_date='9999-01-01' and b.salary>a.salary)+1 as rank
from salaries a where a.to_date='9999-01-01'
order by salary desc,emp_no

原文地址:https://www.cnblogs.com/fuj905/p/12958072.html