SQL窗口函数使用总结

窗口函数分类:
在这里插入图片描述
序列函数:将数据按大小顺序排序
row_number() 按排序顺序依次连续标号1,2,3…
相同值按排序前后,标不同的连续数字
dense_rank() 按排序顺序依次连续标号1,2,3,3,4…
相同值有相同的编号,后面的数字与前面连续
dense_rank() 按排序顺序依次不连续标号1,2,3,3,5…
相同值有相同的编号,后面的数字与前面可能不连续,按数量来算

分布函数:计算出数据所占总体的大概位置 按百分比计算
PERCENT_RANK() = (RANK() – 1) / (Total Rows – 1)
CUME_DIST()=ROW_NUMBER()/TOTAL ROWS

前后函数:向前/向后偏移取值
LAG(EXP_STR,OFFSET,DEFVAL)OVER()
LEAD(EXP_STR,OFFSET,DEFVAL)OVER()
EXP_STR:要取的列
OFFSET: 取偏移后的第几行数据
DEFVAL:没有符合条件的默认值

头尾函数:取第一个/最后一个值
first_value()over()
last_value()over()
与partition by 和order by一起使用

其他:
nth_value()和前面的头尾函数使用方法相似,取排名第n的值
nth_value(c1,n) from first over(…) 正数第n个
nth_value(c1,n) from last over(…) 倒数第n个

ntile:ntile(n) 分成n组返回组号
ROW_NUMBER()/N 向上取整

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值