sql

您所在的位置:网站首页 降序排名和升序排名区别 sql

sql

2023-07-29 19:34| 来源: 网络整理| 查看: 265

窗口函数

简单理解就是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