mysql 学习---窗口函数

Mysql 8.0新特性

窗口函数

  • 理解:
    窗口函数的作用类似于在查询中对数据进行分组,类似于聚合函数,但不同的是把聚合函数是分组的记录合成一条,也就是一组一条数据,窗口函数会将结果放在每一天记录中,每一组相当于一个窗口。
    例如,统计每个部门的销售额,如果是聚合函数,就是每一个部门是一条数据,如果是窗口函数,则每一个员工是一条数据。
  • 窗口函数分类
    • 静态窗口函数
    • 动态窗口函数
  • 窗口函数的语法格式
函数名() over (PARTITION BY 分组字段  ORDER BY 排序字段)

函数名 over  窗口名 ...... WINDOW 窗口名 as ( partition by  .... order by .....)

常见窗口函数

  • 序号函数
    ROW_NUMBER()
    作用:对表中的内容进行分类排序显示,相当于,有全校排名,这个序号函数可以根据全校排名的到班级排名,在班级内部进行排序,各个班级互不干扰
    总结:根据特定条件分组,然后再小组额你
    例如,使用窗口函数row_number(),根据prod字段分组,然后组内按price排序,每条数据都有一个组内的顺序
    SELECT row_number() over(PARTITION BY prod ORDER BY price DESC)  pid,id ,prod, NAME ,price FROM ch
    

在这里插入图片描述

* rank()函数

作用: 根据条件分组,并对组内数据进行排序,可以并列排序并跳过重复序号,例如 1,1,3

  • DENSE_RANK()函数
    作用:根据条件分组,并对组内数据进行排序,可以并列排序,但是不跳过重复序号,例如,1,2,2 ,3
  • 分布函数
    • PERCENT_RANK()函数
      作用:等级值百分比函数,返回的结果是(当前排名-1)/(本组总记录-1),
      • CUME_DIST() 函数
        作用:本组中小于等于条件字段的比例

其他窗口函数
在这里插入图片描述

  • 总的来说,窗口函数,就当作普通函数来使用,用来获取特定字段,主要是获取分组内的特定字段。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值