如何排序显示排名,值相同者排名相同

如何排序显示排名,值相同者排名相同

在牛客网上看到的一段代码:

select s1.emp_no,s1.salary,count(distinct s2.salary) as rank
from salaries s1,salaries s2 
where s1.salary<=s2.salary 
group by emp_no order by rank

或者可以写成

select s1.emp_no,s1.salary,count(distinct s2.salary) as rank
from salaries s1 join salaries s2 on s1.salary<=s2.salary 
group by emp_no order by rank
  1. 连接两张表的不一定是等式,也有可能是不等式
  2. 判断的逻辑关键是s1.salary<=s2.salary,不是按照SAS系统里的ORDER BY语句排序后赋值,而是采用最原始的排序方法,有多少大于等于它的去重后就是它的位置rank
  3. 即使在salaries这张表中emp_no字段是主键,但是因为存在count()函数,所以还是要用group by函数分组

你可能感兴趣的:(已解决)