mysql 学习---窗口函数

文章目录

  • Mysql 8.0新特性
    • 窗口函数
    • 常见窗口函数

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
    

mysql 学习---窗口函数_第1张图片

* rank()函数

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

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

其他窗口函数
mysql 学习---窗口函数_第2张图片

  • 总的来说,窗口函数,就当作普通函数来使用,用来获取特定字段,主要是获取分组内的特定字段。

你可能感兴趣的:(MySQL系列,mysql,学习,数据库)