既要分组又要排序

    技术2022-07-21  96

    常见查询:查询每个部门前三名薪水高的;查询每个班级前三名 开始一头雾水。。。 先声明三个函数: 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;
    Processed: 0.012, SQL: 9