从letecode上面看到的一个sql语句,使用局部变量,感觉比较好,记录下
SELECT e.Name, e.DepartmentId, e.Salary,
@Rank := (CASEWHEN @PrevDept != e.DepartmentId THEN 1
WHEN @PrevSalary = e.Salary THEN @Rank
ELSE @Rank + 1 END) AS Rank,
@PrevDept := e.DepartmentId,
@PrevSalary := e.Salary
FROM Employee e, (SELECT @Rank := 0, @PrevDept := 0, @PrevSalary := 0) r
ORDER BY DepartmentId ASC, Salary DESC