题目描述
对所有员工的当前(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`));
输出描述:
emp_no | salary | rank |
---|---|---|
10005 | 94692 | 1 |
10002 | 94409 | 2 |
10010 | 94409 | 2 |
10001 | 88958 | 3 |
10007 | 88958 | 3 |
10004 | 74057 | 4 |
不看最后一个rank排名,那么这道题特别简单:
select s.emp_no, s.salary
from salaries s
where s.to_date = '9999-01-01'
order by s.salary desc, s.emp_no asc