MySQL窗口函教-开窗聚合函数(SUM()、AVG()、MAX()、MIN()、COUNT())

news2024/11/15 20:42:14

MySQL窗口函教-开窗聚合函数(SUM()、AVG()、MAX()、MIN()、COUNT())

和传统的聚合函数区别?

最大的区别在于,一个操作列,一个是依次操作行,最终显示出每一行,最后的效果就是呈现叠加的效果

-- 开窗聚合函数
SELECT
    dname,
    ename,
    salary,
    sum( salary ) over ( PARTITION BY dname ORDER BY hiredate ) AS c1 
FROM
    employee

根据上面的结果,可以明显的看出,sum()操作是对每一行进行迭代,迭代之前的总数

1、如果没有order by 操作就会对所有的数据进行聚合操作

也可以控制行数,开头和结尾

rows between unbounded(开头) preceding and current(当前行) row

2、从当前行向上取出三个值,相加然后和当前行相加,就得到了当前行的最终值,如果是没有的话,那么就取到有的值。

SELECT
    dname,
    ename,
    salary,
    sum( salary ) over ( PARTITION BY dname ORDER BY hiredate rows between 3 preceding  and current row) AS c1 
FROM
    employee

3、 这里就是取出前面三行和后面一行,再去和本身相加,最终得到最终值

select  
 dname,
 ename,
 salary,
 sum(salary) over(partition by dname order by hiredate  rows between 3 preceding and 1 following) as c1 
from employee;

4、 从当前行加到最后

SELECT
    dname,
    ename,
    salary,
    sum( salary ) over ( PARTITION BY dname ORDER BY hiredate rows BETWEEN current ROW AND unbounded following ) AS c1 
FROM
    employee;

可以将sum换成avg或者max等聚合函数,最终的原理都是一样的

语法结构:rows between unbounded(开头) preceding  and current(当前行) row

紧跟到order by 后面。
按照这样的形式我们可以最终获取

rows是不需要变动的参数,between 也是不需要变动的参数

unbounded preceding :开头

number preceding :加上具体的数字就是往上取到多少值

注意:如果是数值的话,或者开头一定要跟上preceding这个参数

current row:表示当前行,如果出现这个那么也就是范围指定到后面了

其次不变的就是and

如果and后面跟上具体的数字,那么就是代表着向后取多少行

unbounded following:取到最后一行

number following:向后取到具体的行

注意:如果是数值和unbounded就需要注意加following

current row:表示当前行,如果出现这个那么也就是范围指定到后面了,注意row不要忘记了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows环境下安装配置Mosquitto服务及入门操作介绍

文章目录一、概念梳理二、下载与安装三、关于配置文件的一些重要说明四、配置登录账号和密码参考: 博客一、概念梳理 Mosquitto是一款实现了消息推送协议MQTT 3.1的开源消息代理软件,提供轻量级的、支持可订阅/可发布的消息推送模式,是设备与…

mf10ccwm芯片说明部分译文

MF10-N是一种通用的双二阶状态变量滤波器,其中心频率与应用于时钟输入(fCLK)的方波的频率成正比。通过将引脚12连接到适当的直流电压,滤波器中心频率fO可以等于fCLK/100或fCLK/50。通过使用晶体时钟振荡器可以非常精确地设置&…

《深入浅出计算机组成原理》学习笔记 Day5

动态链接1. 静态链接与动态链接2. 地址无关3. PLT 和 GOT参考1. 静态链接与动态链接 静态链接(Static Link)是通过合并代码段的方法来使程序装载至内存; 动态链接(Dynamic Link)则是链接加载到内存中的共享库&#xf…

数据结构之栈与队列详解

文章目录前言一、栈1.栈的概念及定义2.栈的实现(1)栈的结构(2)StackInit(初始化)(3)StackPush(压栈)(4)StackPop(出栈&…

与众不同的异域年夜饭体验,你最中意哪一款?

年夜饭,中国人一年中最重要的一顿团圆聚餐,不仅丰富多彩,还充满了各种吉祥寓意。如果你选择的是出境旅游过春节,那么一次异域年夜饭体验也可以让你的旅行充满乐趣,收获与众不同的别样回忆。今天就跟着小旅城去看看&…

1597_AURIX_TC275_GPIO简介

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 左上角画出来的这个寄存器可以进行输入输出的控制。从右边上下拉设备这里可以看得出来,输入输出其实都是可以配置的。当端口配置为输入的时候,逻辑图中的输出驱动会…

使用文本编辑器编写Java源代码

使用文本编辑器编写Java源代码 编写JavaJavaJava应用程序,可以使用任何一个文本编辑器来编写程序的源代码,然后使用JDKJDKJDK搭配的工具进行编译和运行,在这里,我将介绍一个使用简单的文本编辑器来开发一个JavaJavaJava应用程序的…

【创业分享】2022年,仅赚几万,但却很踏实?

大家好,欢迎来到停止重构的频道。本期,我们停一下技术讨论,反思一下2022年的变化以及展望一下2023年。回顾2022这是我们以正式商业主体创业的第一年。总的来说,除了不赚钱和软件产品还没做出来以外,其实还不错。自媒体…

Linux常用命令——tcpreplay命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tcpreplay 将PCAP包重新发送,用于性能或者功能测试 补充说明 简单的说,tcpreplay是一种pcap包的重放工具,它可以将用ethreal、wireshark工具抓下来的包原样或经过任意修改后…

Spark Core 编程入门,常用算子介绍

RDD的创建 如下代码,Spark RDD编程的入口对象是SparkContext对象(不论何种编程语言),只有构建出SparkContext,基于它才能执行后续的API调用和计算 本质上,Spark Context对编程来说,主要功能就是创建第一个RDD出来 # …

JVM 垃圾回收(深入理解Java虚拟机第三章)

垃圾判断算法 引用计数法 每个对象增加引用计数器,引用加一,失效减一,为零判定为垃圾数据。 缺点:循环引用难以解决 根搜索算法 从树状引用链向下查找,如果对象无法找到,则标记为垃圾数据。 JVM算法 …

Java反射学习

反射的概念 Reflection(反射)是Java被视为动态语言的关键 反射机制允许程序在执行期借助于Reflection API获得任何类的内部信息, 并能直接操作任意对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象&…

【JavaEE】阻塞队列 + 生产者消费者模型

目录 阻塞队列 阻塞队列的使用 生产者消费者模型 模型的两个好处 1. 降低耦合 2. 削峰填谷 简单实现阻塞队列 阻塞队列 阻塞队列是在一般的队列上升级而来的。 对于队列为空时,如果还想取队列中的元素,此时阻塞队列就会进行阻塞。 对于队列为满时…

fpga的SD卡读BMP图片显示实验(SPI模式)

对于 SD 卡的 SPI 模式而言,采用的 SPI 的通信模式为模式 3,即 CPOL1,CPHA1,在 SD 卡 2.0 版本协议中,SPI_CLK 时钟频率可达 50Mhz。SD 卡的 SPI 模式,只用到了 SDIO_D3(SPI_CS)、SD…

Nacos 部署简单使用

文章目录1、前置相关知识及说明2、官网3、环境4、Nacos 和 Zookeeper、Eureka 的主要区别5、安装部署 & 启动5.1、Windows下载安装包部署单机部署集群部署测试6、使用服务端客户端 - SpringBoot 使用 Nacos Client7、运维健康检查获取配置,验证服务端是否正常异…

【DX-BT24蓝牙模块连接Arduino与手机透传教程】

【DX-BT24蓝牙模块连接Arduino与手机透传教程】1. 前言2. 接线3. 程序设计详解4. 演示效果5. 小结1. 前言 大夏龙雀科技DX-BT24&BT24-S&BT24-PA蓝牙模块,拥有5.1蓝牙协议,模块内置标准串口协议。前期设置蓝牙名称为VOR,采用默认波特率9600,详细…

JavaScript 入门基础 - 对象(五)

JavaScript 入门基础 - 对象 文章目录JavaScript 入门基础 - 对象1. 对象1.1 对象的基本理解1.2 为什么需要变量2. 创建对象的方式2.1 利用字面量创建对象2.2 变量属性函数方法的区别2.3 利用 new Object 创建对象2.4 利用构造函数创建对象3.new关键字4. 遍历对象属性5. JavaSc…

二、Promise

Promise1、回调地狱1.1 如何解决回调地狱的问题1.2 Promise 的基本概念2、基于回调函数按顺序读取文件内容3. 基于 then-fs 读取文件内容3.1 then-fs 的基本使用3.2 .then() 方法的特性3.3 基于 Promise 按顺序读取文件的内容3.4 通过 .catch 捕获错误3.4 通过 .catch 捕获错误…

基于RBAC权限控制模型的管理系统的设计与实现

文章目录一、RBAC 权限设计1.1 模型概述1.2 模型分类二、基于RBAC的后台管理系统2.1 项目概述2.2 技术选型2.3 内部处理流程2.4 功能模块展示2.5 权限控制展示2.6 下载说明一、RBAC 权限设计 1.1 模型概述 基于角色的访问控制 RBAC,是实施面向企业安全策略的一种有…

kafka的介绍和基本使用

文章目录Kafka介绍1.Kafka的使用场景2.Kafka基本概念kafka基本使用1.安装前的环境准备2.启动kafka服务器3.创建主题topic4.发送消息5.消费消息Kafka介绍 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的 &…