SQL 22) 对所有员工的当前薪水按照salary进行按照1-N的排名
对所有员工的薪水按照salary进行按照1-N的排名
http://www.nowcoder.com/questionTerminal/b9068bfe5df74276bd015b9729eec4bf
方法)dense_rank()over
SELECT emp_no, salary, dense_rank()over(ORDER BY salary DESC) FROM salaries WHERE to_date = '9999-01-01'
为何用dense_rank : 相同分数并列且不影响排名
dense_rank() -- 1 22 33 444
rank() -- 1 22 44 666
row_number() -- 123456
21/3/25 更新
发现第一种做法没有体现 相同薪水按照emp_no排序这一点 修改如下
select emp_no, salary , dense_rank()over(order by salary desc) r from salaries where to_date = '9999-01-01' order by r, emp_no asc;
SQL 文章被收录于专栏
SQL