sql窗口函数中的取值函数
发布时间:2024年01月16日
窗口函数 over(parttion by 字段1 order by 字段2)
序号函数
函数名 | 函数功能 |
row_number() | 连续取值,且值不重复 |
rank() | 如果有相同的值,它们将获得相同的排名,下一个值的排名将跳过之前的排名。(会出现缺失的排名) |
dense_rank() | 如果有相同的值,它们将获得相同的排名,下一个值的排名不跳过之前的排名。(不会出现缺失的排名) |
总结:
如果有两行的值是相同的,那么
- ROW_NUMBER()会给它们分配不同的行号,
- RANK()会给它们分配相同的排名并跳过下一个排名,
- DENSE_RANK()会给它们分配相同的排名并不跳过下一个排名
前后函数
函数名 | 函数功能 |
lag(expr, n) | 返回当前行的前n行的值 |
lead(expr, n) | 返回当前行的后n行的值 |
函数名 | 函数功能 |
range() | 基于当前行的值的。例如, RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 定义的窗口包含从分区的开始到当前行(包括当前行)的所有行。 |
rows() | 基于当前行的位置的。例如,ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING 定义的窗口包含前一行、当前行和后一行。 |
文章来源:https://blog.csdn.net/bulling/article/details/134335008
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!