有一个薪水表salaries简况如下: emp_no salary from_date to_date 10001 88958 2002-06-22 9999-01-01 10002 72527 2001-08-02 9999-01-01 10003 43311 2001-12-01 9999-01-01 10004 72527 2001-12-01 9999-01-01 对所有员工的薪水按照salary降序先进行1-N的排名,如果salary相同,再按照emp_no升序排列,但二者t_rank要相同: emp_no salary t_rank 10001 88958 1 10002 72527 2 10004 72527 2 10003 43311 3
时间: 2023-06-15 11:03:08 浏览: 157
简易工资表
可以使用MySQL语句来实现这个功能:
```
SELECT emp_no, salary,
(SELECT COUNT(DISTINCT salary) FROM salaries s2 WHERE s2.salary >= s1.salary) AS t_rank
FROM salaries s1
ORDER BY salary DESC, emp_no ASC;
```
这个语句首先按照salary降序排序,然后使用子查询来计算当前salary的t_rank,也就是比当前salary大或等于的唯一salary的数量。最后按照salary和emp_no排序即可。
阅读全文