1. 题目描述
1.1 输入
有一个薪水表salaries简况如下:
1.2 输出
对所有员工的薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列:
2. 题目分析及解答
2.1 题目分析
该题与另一道题(题解-牛客网-SQL-(SQL18)查找当前薪水排名第二多的员工编号emp_no)有一定相似之处,可以互相对照参考。在sqlite不方便使用窗口函数的情况下,应考虑salaries表的自连接查询以获得各个薪水的排名。
2.2 详细解答
根据题目分析可直接写出相应的SQL查询语句:
SELECT
s1.emp_no,
s1.salary,
( SELECT COUNT( DISTINCT s2.salary ) FROM salaries AS s2 WHERE s1.salary <= s2.salary ) AS t_rank
FROM
salaries AS s1
ORDER BY
s1.salary DESC;