数据库SQL实践23: 对所有员工的薪水按照salary进行按照1-N的排名

思想:

题目要求对所有员工的当前(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;

猜你喜欢

转载自blog.csdn.net/weixin_43160613/article/details/83958033