SQL中的窗口函数

窗口函数是什么:

        窗口函数是一种分析型的OLAP函数,OLAP是online analytical processing的简称,意思是对数据库数据进行实时分析处理。

窗口函数的作用:

        用来解决一些排名问题。

窗口函数的基本语法:

<窗口函数> over ( [partition by <分组列名>]

[order by <排序列名>] )
  • 排名函数
  1. row_number:根据指定的顺序,从1开始计算连续的行号。

  2. ntile:函数对一个数据分区中的有序结果集进行划分,将其分成数量大致相等的块,根据输入的块数和指定的窗口进行排序。

  3. rank与dense_rank:计算一组数值中的排序值

row_number,rank,dense_rank的区别

        rank:并列跳跃排名。生成数据项在分组中的排名,排名相等会在名次中留下空位。例如1、2、2、4、4、6、7、8。

        dense_rank:并列连续排名。生成数据项在分组中的排名,排名相等会在名次中不会留下空位,例如1、2、2、3、3、4、4、5。

        row_number:连续排名。从1开始,按照顺序,生成分组内记录的序列,row_number()的值不会存在重复,当排序的值相同时,按照表中记录的顺序进行排列。例如1、2、3、4、5、6、7。

  • 取值函数
  1. first_value():取分组内排序后,截止到当前行,第一个值;

  2. last_value():取分组内排序后,截止到当前行,最后一个值。

  • 分布函数
  1. 排名分布函数:percent_rank(百分位排名)和cume_dist(累积分布)

  2. 逆分布函数:percent_cont(百分位连续)和percentile_disc(百分位离散)

  • 偏移量函数
  1. lag(col,n,default): 用于统计窗口内往上第n行值;

  2. lead(col,n,default):与lag相反,用于统计窗口内往下第n行值

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值