常见查询:查询每个部门前三名薪水高的;查询每个班级前三名 开始一头雾水。。。 先声明三个函数: rank() 它产生的排名结果就是1114 dense_rank() 产生的结果为1112 row_number() 产生的结果为1234 模板:
select * from (
select *, row_number
() over(partition by 要分组的列名
order by 排序的列名
desc) ranking
from 表名
) a
where ranking
<= 3
但是 ,发现有时候网页编辑器不支持这样,或者得到的结果和输出不一致。。。 就只能用最原始最简单的查询了
select * from employee e1
where (select count(distinct e2
.salary
) from employee e2
where e2
.salary
> e1
.salary
and e1
.departmentid
= e2
.departmentid
)<3;