sql |
您所在的位置:网站首页 › 降序排名和升序排名区别 › sql |
窗口函数
简单理解就是rank()、dense_rank()用来获取排名,可以用partition by 来分组,order by 对某一字段的数据进行排名。 1、RANK() 在计算排序时,若存在相同位次,会跳过之后的位次。 例如,有3条排在第1位时,排序为:1,1,1,4······ 2、DENSE_RANK() 这就是题目中所用到的函数,在计算排序时,若存在相同位次,不会跳过之后的位次。 例如,有3条排在第1位时,排序为:1,1,1,2······ 语法: OVER ( ORDER BY ) 举例例1:[LC185]. 部门工资前三高的所有员工 思路: 此题要获得各部门的前三高工资的员工,在使用窗口函数时注意用partition by进行分组排序,而不是对整个表进行salary的降序排列。 select b.name department ,a.name Employee ,a.salary from (select c.* , dense_rank() over( partition by departmentid order by salary desc ) as 'num' from employee c ) a left join department b on a.departmentid=b.id where b.name is not null and a.num |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |