思想:
题目要求对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列。
首先通过条件where s1.to_date='9999-01-01' and s2.to_date='9999-01-01' and s1.salary <= s2.salary 找出员工当前的工资并找出等于和高于它的工资。
其次通过条件group by s1.emp_no实现按照emp_no分组,并计算distinct s2.salary的个数即它的排名
最后通过条件order by s1.salary desc,s1.emp_no asc对结果集按照s1.salary降序排,若s1.salary一样就按emp_no升序排
select s1.emp_no,s1.salary,count(distinct s2.salary) as rank from salaries s1,salaries s2
where s1.to_date='9999-01-01' and s2.to_date='9999-01-01' and s1.salary <= s2.salary
group by s1.emp_no order by s1.salary desc,s1.emp_no asc;