- 从两个salaries里取数;
- 给定s1的金额,把s2里大于>=该金额的数提出来,比如s1对应的一行是8000,整个表里只有8000和8100>=8000,那么这个emp_no对应的就是这俩数;
- 根据emp_no做group by,得到每个员工对应的金额小于的所有值,然后再计算不重复值,即count(distinct s2.salary);
- 最后按金额降序。
代码:
select s1.emp_no, s1.salary, count(distinct s2.salary)
from salaries s1, salaries s2
where s1.salary <= s2.salary
group by s1.emp_no
order by s1.salary desc



京公网安备 11010502036488号