我有一张桌子,有员工ID,姓名,工资。我想根据工资对员工进行排名。
表:雇员
id employee_name employee_salary
1 Martin 3500
2 Su 4000
3 Alex 3500
4 Flora 8000
我想要的结果是
id employee_name employee_salary Rank
1 Martin 3500 3
2 Su 4000 2
3 Alex 3500 3
4 Flora 8000 1
尝试使用rank()函数,查询是
select salary, rank() over(order by employee_salary DESC) AS Rank from employee
这会给出一个mysql错误,指出
在分析过程中发现了3个错误。
之前发现了一个别名。 (在" Rank"在61位) 预计会有别名。 (在""在60号位置附近) 意外的标记。 (靠近" Rank"在61号位置
查询有什么问题?
答案 0 :(得分:2)
如果不使用变量,您可以将排名设为
select a.*,
(select count(*) + 1
from employee
where employee_salary > a.employee_salary) as rank
from employee a
Mysql 8支持window functions
答案 1 :(得分:0)