当前位置:   article > 正文

对所有员工的薪水按照salary进行按照1-N的排名_薪资结构,按照n-1模式

薪资结构,按照n-1模式

题目描述

对所有员工的当前(to_date=’9999-01-01’)薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列

CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

解题方案

本题的思路在于如何获取排名,可以使用两个表关联然后判断获取第二张表比第一张表中薪资高的数并按照emp_no分组并使用count进行聚合;其次是解决顺序问题,首先排序多个字段刚好就是先对第一个字段进行排序,然后在第一个字段基础上排序第二个字段,所以刚好实现了当前的需求。

select s1.emp_no,s1.salary,count(distinct s2.salary)
from salaries as s1 ,salaries as 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/429146
推荐阅读
相关标签
  

闽ICP备14008679号