问题描述:
分析:
一、使用排序函数
二、计算
计算排名相当于算前面有多少个大于他,上例若排名是 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