• MySql基础篇——窗口函数和公用表达式


    一、窗口函数

    1. 分类

    mysql8.0版本开始支持窗口函数。窗口函数的作用类似于在查询中对数据分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数则只是将同组函数放在一起并没有合并。
    窗口函数分为静态窗口函数动态窗口函数

    • 静态窗口函数的窗口大小是固定的,不会应为记录的不同而不同。
    • 动态窗口函数的窗口大小会随着记录的不同而变化。

    串口函数总体上可以分为序号函数、分布函数、前后函数、首尾函数和其他函数。
    在这里插入图片描述

    2. 语法

    窗口函数的语法结构是:

    函数 over (PARTITION BY 字段名 ORDER BY 字段名 ASC)
    
    • 1

    或者是:

    函数 over 窗口名
    window 窗口名 as (PARTITION BY 字段名 ORDER BY 字段名 ASC)
    
    • 1
    • 2

    在这里插入图片描述


    二、公用表表达式

    1. 介绍

    公用表表达式简称CTE。CTE是一个命名的临时结果集,作用范围是当前语句。
    CTE可以理解为一个可以复用的子查询,CTE可以引用其他CTE,但子查询不能引用其他子查询。
    依据语法结构和执行方式的不同,公用表表达式分为普通公用表表达式递归公用表表达式 2种。

    2. 使用

    with CTE名称 as (子查询)
    select | delete | update 语句;
    
    • 1
    • 2

    递归公用表表达式由两部分组成,分别是种子查询和递归查询,中间通过关键字union all进行连接。
    这里的种子查询,意思就是获得递归前初始值。这个子查询只会运行一次。
    在这里插入图片描述
    公用表表达式的作用是可以代替子查询,而且可以被多次引用。递归公用表表达式对查询有一个共同根节点的树形结构数据非常高效,可以轻松搞定其他查询方式难以处理的查询。

  • 相关阅读:
    工信部等四部门印发重要标准化指南,引领人工智能产业高质量发展
    我做了一个在线白板(二)
    能带你起飞的【数据结构】成王第八篇:二叉树
    一朵华为云,如何做好百模千态?
    linux格式化输入输出
    数仓开发之DWD层(一)
    Typora免费版下载【Mac、Windows】
    SSM+校园社团平台 毕业设计-附源码251554
    FE_Vue学习笔记 - 数据代理
    arm-三盏灯流水
  • 原文地址:https://blog.csdn.net/qq_51114283/article/details/125561428