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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。