SQL窗口函数OVER用法整理

news2024/12/24 9:23:41

文章目录

  • SQL窗口函数OVER用法整理

SQL窗口函数OVER用法整理

OVER的定义
OVER用于为行定义一个窗口,它对一组值进行操作,不需要使用GROUP BY子句对数据进行分组,能够在同一行中同时返回基础行的列和聚合列。

语法

OVER ( [ PARTITION BY column ] [ ORDER BY culumn ] [ROWS|RANGE BETWEEN 边界规则1 and 边界规则2])

ARTITION BY 子句进行分组;
ORDER BY 子句进行排序;
ROWS|RANGE 框架是对窗口进行进一步的分区,框架有两种范围限定方式:一种是使用ROWS子句,通过指定当前行之前或之后的固定数目的行来限制分区中的行数;另一种是RANGE子句,按照排序列的当前值,根据相同值来确定分区中的行数。
窗口函数OVER()指定一组行,开窗函数计算从窗口函数输出的结果集中各行的值。

RANGE表示按照值的范围进行范围的定义,而ROWS表示按照行的范围进行范围的定义;边界规则的可取值见下表
在这里插入图片描述
用法
OVER开窗函数必须与聚合函数或排序函数一起使用,聚合函数一般指SUM(),MAX(),MIN,COUNT(),AVG()等常见函数。排序函数一般指RANK(),ROW_NUMBER(),DENSE_RANK(),NTILE()等。

示例
创建测试表

create table Employee
(
    ID INT PRIMARY KEY
    ,Name VARCHAR(20)
    ,GroupName VARCHAR(20)
    ,Salary INT
) INSERT into Employee VALUES(1, '小明', '开发部', 8000), (4, '小张', '开发部', 7600), (5, '小白', '开发部', 7000), (8, '小王', '财务部', 5000), (9, null, '财务部', NULL), (15, '小刘', '财务部', 6000), (16, '小高', '行政部', 4500), (18, '小王', '行政部', 4000), (23, '小李', '行政部', 4500), (29, '小吴', '行政部', 4700);

SUM后的开窗函数

select  *
        ,SUM(Salary) OVER(PARTITION BY Groupname) 每个组的总工资
        ,SUM(Salary) OVER(PARTITION BY groupname ORDER BY ID) 每个组的累计总工资
        ,SUM(Salary) OVER(ORDER BY ID) 累计工资
        ,SUM(Salary) OVER() 总工资
from    Employee

结果如下:
在这里插入图片描述
其中开窗函数的每个含义不同,我们来具体解读一下:

SUM(Salary) OVER (PARTITION BY Groupname)

只对PARTITION BY后面的列Groupname进行分组,分组后求解Salary的和。

SUM(Salary) OVER (PARTITION BY Groupname ORDER BY ID)

对PARTITION BY后面的列Groupname进行分组,然后按ORDER BY 后的ID进行排序,然后在组内对Salary进行累加处理。

SUM(Salary) OVER (ORDER BY ID)

只对ORDER BY 后的ID内容进行排序,对排完序后的Salary进行累加处理。

SUM(Salary) OVER ()

对Salary进行汇总处理

排序
ROW_NUMBER()
定义:ROW_NUMBER()函数作用就是将SELECT查询到的数据进行排序,每一条数据加一个序号

select  *
        ,ROW_NUMBER() OVER (PARTITION BY ClassName ORDER BY SCORE DESC) 班内排序
        ,ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS 总排序
from    Scores;

在这里插入图片描述

RANK()
select  ROW_NUMBER() OVER (ORDER BY SCORE DESC) AS [RANK]
        ,*
from    Scores
;

select  RANK() OVER (ORDER BY SCORE DESC) AS [RANK]
        ,*
from    Scores;

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

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

相关文章

核心大表7亿数据,查询性能快40倍!科大讯飞HTAP探索实践

科大讯飞在 2021 年关注原生分布式数据库,并于 2023 年 7 月在核心业务落地 OceanBase,实现了业务稳定运行、灵活扩缩容,以及一套系统处理 TP 和 AP 业务且互不影响。并带来了意外收获,即存储成本下降 50%、运维复杂度极大简化。科…

五年制专转本备考冲刺阶段,老师给你六点建议助你上岸

1、热衷的不是学习,而是思考 人与人之间最大的差别在于思维的差别,也可以说是思考的差别。专转本也是如此,有人思考得简单,有人思考得复杂;有人想得全面,有人想得肤浅。 只有善于思考,才会对问…

Springboot管理系统数据权限过滤——ruoyi实现方案

本文主要简述,Ruoyi框架使用的权限过滤实现方案,实现简单易懂。主要知识点有: 注解定义;面向切面编程,在执行有数据权限注解的方法之前获取用户组织权限,拼接到domain对象的params参数中; 1. …

函数的栈帧

我们每次在调用函数的时候,都说会进行传参。每次创建函数,或者进行递归的时候,也会说会进行压栈。 那么,今天我们就来具体看看函数到底是如何进行压栈,传参的操作。 什么是栈? 首先我们要知道,…

Python (五) 处理图像

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

深度学习(生成式模型)——ADM:Diffusion Models Beat GANs on Image Synthesis

文章目录 前言基础模型结构UNet结构Timestep Embedding关于为什么需要timestep embedding global attention layer 如何提升diffusion model生成图像的质量Classifier guidance实验结果 前言 在前几篇博文中,我们已经介绍了DDPM、DDIM、Classifier guidance等相关的…

【Scala】Scala中的一些基本数据类型的特性 列表、元组、构造器、单例对象、伴生类、伴生对象、抽象类与特质

列表 使用List(“”,“”,“”)去声明 sliding 和 groued表示迭代器 val iter List("Hadoop", "Spark", "Scala") sliding 2// sliding 和 groued 是有区别的while (iter.hasNext){println(iter.next())}for (elem <- iter){println(elem)}…

11 月 NFT 动态:交易量增长,Layer 2 格局剧变

作者&#xff1a;stellafootprint.network 11 月份&#xff0c;随着比特币和以太坊价格的提升&#xff0c;加密货币市场活动频繁&#xff0c;市场呈现进一步复苏的迹象。NFT 领域中&#xff0c;Blur 的交易量飙升&#xff0c;进一步巩固地位&#xff1b;Blast 的亮相&#xff…

数字图像处理(实践篇)二十二 使用opencv进行人脸、眼睛、嘴的检测

目录 1 xml文件 2 涉及的函数 3 实践 使用opencv进行人脸、眼睛、嘴的检测。 1 xml文件 方法① 下载 地址&#xff1a;https://github.com/opencv/opencv/tree/master/data/haarcascades 点击haarcascade_frontalface_default.xml文件 对着Raw右键&#xff0c;选择“链接…

centos7 安装nnDetection环境

nnunet和nnDetection更新导致默认安装可能会出现无法调用GPU的问题&#xff0c;这里稍微细致的记录下安装nnDetection环境过程。 1.创建虚拟环境&#xff1a; Please note that nndetection requires Python 3.8. Please use PyTorch 1.X version for now and not 2.0 这里要…

Linux——Web网站服务(二)

一、httpd服务的访问控制 1、客户机地址限制 通过Require配置项&#xff0c;可以根据主机的主机名或P地址来决定是否允许客户端访问。在 httpd服务器的主配置文件的<Location>&#xff0c;<Directory>、<Files>、<Limit>配置段中均可以使用Require配置…

【SpringBoot教程】SpringBoot 实现前后端分离的跨域访问(CORS)

作者简介&#xff1a;大家好&#xff0c;我是撸代码的羊驼&#xff0c;前阿里巴巴架构师&#xff0c;现某互联网公司CTO 联系v&#xff1a;sulny_ann&#xff08;17362204968&#xff09;&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗…

分布式锁实现方案 - Lock4j 使用

一、Lock4j 分布式锁工具 你是不是在使用分布式锁的时候&#xff0c;还在自己用 AOP 封装框架&#xff1f;那么 Lock4j 你可以考虑一下。 Lock4j 是一个分布式锁组件&#xff0c;其提供了多种不同的支持以满足不同性能和环境的需求。 立志打造一个简单但富有内涵的分布式锁组…

云贝教育 | 分享课:12月12日周二晚Oracle分享课享来了

Oracle 19c OCM分享课分享主题: Introduction to Clusterware 讲师&#xff1a;郭一军 直播分享平台&#xff1a;云贝教育视频号 时间&#xff1a;12月12日 周二晚 19: 30

物联网平台:网络调试助手+HTTP+上传数据到onenet

目录 onenet设备初始化 获取设备id和密钥key 尝试上传数据&#xff0c;实例 onenet设备初始化 获取设备id和密钥key 进入官网 中移坤灵 - 中国移动物联网开放平台 (10086.cn)https://open.iot.10086.cn/ 创建登录账号后&#xff0c;点击左上角的开发者中心 点击左上角的全…

ARP协议:地址解析协议

目录 引言 什么是ARP协议&#xff1f; ARP协议的工作原理 1. ARP请求 2. ARP应答 3. ARP缓存 ARP协议的应用 结语 其他链接 引言 在计算机网络中&#xff0c;地址解析协议&#xff08;ARP&#xff0c;Address Resolution Protocol&#xff09;扮演着重要的角色。ARP协议…

I2C 应用编程

1. I2C 框架结构 1.1 I2C 硬件框架 I2C 总线拓扑图 ⚫ 在一个芯片 (SoC) 内部&#xff0c;有一个或多个 I2C 控制器 ⚫ 在一个 I2C 控制器上&#xff0c;可以连接一个或多个 I2C 设备 ⚫ I2C 总线只需要 2 条线&#xff1a;时钟线 SCL 、数据线 SDA ⚫ 在 …

tamcat乱码

学习springmvc时tamcat乱码 ①、启动时tomcat控制台乱码 解决方法是&#xff1a;1、先把idea设置里的默认字节码改成utf-8 ​ 2、把idea显示编码改成utf-8&#xff0c;在末尾加上&#xff08; -Dfile.encodingUTF-8&#xff09; ​ 3、最后重启idea 加上这个 -Dfile.encodingU…

外贸获客怎么做?有哪些技巧?

外贸获客是许多企业拓展海外市场的关键一环&#xff0c;为了成功地吸引潜在客户&#xff0c;我们需要了解一些基本的获客技巧&#xff0c;本文将分享一些实用的方法和技巧&#xff0c;帮助您在外贸领域获得更多的客户。 一、了解目标客户 在开展外贸业务之前&#xff0c;了解…

保研毕业论文查重率多少通过【保姆教程】

大家好&#xff0c;今天来聊聊保研毕业论文查重率多少通过&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 保研毕业论文查重率多少通过 在保研过程中&#xff0c;毕业论文的查重率是衡量学术诚信和论文…