三种用于进行排序的专用窗口函数

1、RANK()
在计算排序时,若存在相同位次,会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,4······

2、DENSE_RANK()
这就是题目中所用到的函数,在计算排序时,若存在相同位次,不会跳过之后的位次。
例如,有3条排在第1位时,排序为:1,1,1,2······

3、ROW_NUMBER()
这个函数赋予唯一的连续位次。
例如,有3条排在第1位时,排序为:1,2,3,4······

窗口函数用法:
<窗口函数> OVER ( ORDER BY <排序用列清单> )

题目

  1. 对所有员工的薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列

在这里插入图片描述

select emp_no, salary,
       dense_rank() over (order by salary desc) as rank
from salaries
where to_date='9999-01-01'
order by rank asc,emp_no asc;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL窗口函数是一种用于对查询结果进行聚合、排序、极值、移动和切片等操作的函数。窗口函数有两种类型,一种是专用窗口函数,如rank、dense_rank、row_number等,用于对查询结果进行排序和编号。另一种是聚合函数,如sum、avg、count、max、min等,用于对查询结果进行聚合计算。\[1\] 子查询是一种在主查询中使用的查询,用于返回主查询所需的数据或对检索数据进行进一步的限制。子查询的结果可以作为主查询的数据来源或判断条件。常见的子查询类型包括WHERE子查询、HAVING子查询、FROM子查询、SELECT子查询和EXISTS子查询。子查询可以帮助我们在查询中进行更复杂的条件判断和数据筛选。\[2\] 窗口函数与数据分组功能相似,都可以对数据进行统计分析。但窗口函数与数据分组有一些区别。窗口函数对每个组返回多行结果,而数据分组只返回每个组的一行结果。窗口函数可以指定数据窗口的大小,并随着行的变化而变化,而数据分组是对所有数据进行统计。窗口函数的语法通常是在聚合函数后面使用over子句来指定分析函数工作的数据窗口,可以通过partition by子句指定用于分组的列名,通过order by子句指定用于排序的列名。\[3\] #### 引用[.reference_title] - *1* *2* *3* [SQL进阶,子查询与窗口函数](https://blog.csdn.net/junhongzhang/article/details/122974614)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值