排名为coloum

时间:2018-05-23 11:05:13

标签: php mysql

我有一张桌子,有员工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号位置

查询有什么问题?

2 个答案:

答案 0 :(得分:2)

如果不使用变量,您可以将排名设为

select a.*,
  (select count(*) + 1 
   from employee 
   where employee_salary > a.employee_salary) as rank
from employee a

Demo

Mysql 8支持window functions

答案 1 :(得分:0)

尝试此查询

SELECT id, employee_name, employee_salary, @rank := @rank + 1 AS Employee_rank FROM employee e, (SELECT @rank := 0) r ORDER BY employee_salary desc

结果将是这样的

enter image description here