MySQL刷题遇到的盲点(五)窗口函数
窗口函数
语法:
<窗口函数> over (partition by <用于分组的列名>order by <用于排序的列名>)
-
partition by:用来对表分组( partition 子句可以省略,省略就是不指定分组)
-
order by:是对分组后的结果进行排序
<窗口函数>的位置,可以放以下两种函数:
-
专用窗口函数。如:rank, dense_rank, row_number等专用窗口函数。
-
聚合函数。如sum,avg, count,max, min等
因为窗口函数是对where或者group by子句处理后的结果进行操作,所以窗口函数原则上只能写在select子句中。
窗口函数具备了我们之前学过的group by子句分组的功能和order by子句排序的功能。那么,为什么还要用窗口函数呢?
这是因为,group by分组汇总后改变了表的行数,一行只有一个类别,而partiition by和rank函数不会减少原表中的行数
窗口函数的功能:
- 同时具有分组和排序的功能
- 不减少原表的行数(经常用来在每组内排名)
使用场景
-
排名问题。比如:每个部门按业绩来排名
-
topN问题。比如:找出每个部门排名前N的员工进行奖励
面对这类需求,就需要使用sql的高级功能窗口函数
具体使用方法
一、使用专用窗口函数
rank函数:
如果有并列名次的行,会占用下一名次的位置。 比如正常排名是1,2,3,4,但是现在前3名是并列的名次,结果是:1,1,1,4。
dense_rank函数:
如果有并列名次的行,不占用下一名次的位置。 比如正常排名是1,2,3,4,但是现在前3名是并列的名次,结果是:1,1,1,2。
row_number函数:
不考虑并列名次的情况。 比如前3名是并列的名次,排名是正常的1,2,3,4。
强调一点:
在上述的这三个专用窗口函数中,函数后面的括号不需要任何参数,保持()空着就可以。
二、使用聚合函数作为窗口函数
聚和窗口函数和上面提到的专用窗口函数用法完全相同,只需要把聚合函数写在窗口函数的位置即可,但是函数后面括号里面不能为空,需要指定聚合的列名。
注意!!!
sum求和,avg平均、count计数、max最大值、min最小值都是针对自身记录、以及自身记录之上的所有数据进行计算。
怎么理解上面这句话呢? 看下面这个例子:

如上图,比如sum(grade)的结果中:
001号,在使用sum窗口函数后的结果,是对001号的成绩求和;
002号,在使用sum窗口函数后的结果,是对001,002号的成绩求和;
003号,在使用sum窗口函数后的结果,是对001,002,003号的成绩求和;
004号,在使用sum窗口函数后的结果,是对001,002,003,004号的成绩求和。
如果想要知道所有人成绩的总和、平均等聚合结果,看最后一行即可。
其他函数同理。
为什么要这么设计呢?
聚合函数作为窗口函数,可以在每一行的数据里直观的看到,截止到本行数据,统计数据是多少(最大值、最小值等)。
同时可以看出每一行数据,对整体统计数据的影响。
文章参考:
通俗易懂的学会:SQL窗口函数
相关文章:
MySQL刷题遇到的盲点(五)窗口函数
窗口函数 语法: <窗口函数> over (partition by <用于分组的列名>order by <用于排序的列名>) partition by:用来对表分组( partition 子句可以省略,省略就是不指定分组) order by:是…...
【java】基础——多态
多态基本知识思维导图 多态的代码实现,注意父类对象引用指向子类对象引用(向上转型)的方法,父类就可以调用子类重写的方法和派生的方法,但不能调用子类特有的方法: class Animal {public void makeSound()…...
Go语言使用cron/v3实现定时任务
一、获取cron/v3包 go get github.com/robfig/cron/v3v3.0.0安装v3版本的cron包。 二、创建cron调度器 使用cron.New()创建一个新的Cron调度器: c : cron.New()三、添加定时任务 使用AddFunc方法添加定时任务,参数是cron表达式和任务函数: c.AddFunc("* * * * *&quo…...
photoshop PS 查看像素坐标、像素颜色、像素HSB颜色
方法一 photoshop 菜单栏 窗口菜单->信息菜单项(F8), 在信息窗口里会有当前的 x,y坐标 方法二 photoshop 菜单栏 视图菜单->标尺菜单项(ctrlR) 宽度和高度边上都有标尺,默认的是厘米,右键单机宽度和高度边上…...
SpringCloud实用篇3----Docker
1.初识Docker 1.1 什么是Docker 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致…...
使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统
阿里云百科分享使用阿里云服务器建站教程,本文是搭建Discuz论坛,Discuz!是一款通用的社区论坛软件系统,它采用PHP和MySQL组合的基础架构,为您提供高效的论坛解决方案。本文介绍如何在CentOS 7操作系统的ECS实例上搭建Discuz! X3.4…...
gitee(码云)如何生成并添加公钥配置用户信息
一,简介 在使用Gitee的时候,公钥是必须的,无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器,然后配置自己的用户信息,方便日后拉取与上传代码。 二,步骤介绍 2.1 本地生成公钥 打开git ba…...
C++QT教程3——手册4.11.1自带教程(笔记)——创建一个QT快速应用
文章目录 创建一个QT快速应用创建项目创建主视图添加应用逻辑为视图添加动画素材文件 参考文章 创建一个QT快速应用 本教程使用内置的QML类型,介绍了Qt Quick的基本概念。有关可以选择的用户界面选项的更多信息,请参阅用户界面。 本教程描述了如何使用…...
用友时空KSOA SQL注入漏洞复现(HW0day)
0x01 产品简介 用友时空KSOA是建立在SOA理念指导下研发的新一代产品,是根据流通企业最前沿的I需求推出的统一的IT基础架构,它可以让流通企业各个时期建立的IT系统之间彼此轻松对话,帮助流通企业保护原有的IT投资,简化IT管理&#…...
java中编写代码:如何以sftp的形式把文件从服务器上面下载下来?(有账号和密码)
在Java中,你可以使用JSch库来实现通过SFTP协议下载文件。以下是一个简单的示例代码: import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class SFTPDownloa…...
【24择校指南】南京大学计算机考研考情分析
南京大学(A) 考研难度(☆☆☆☆☆) 内容:23考情概况(拟录取和复试分数人数统计)、院校概况、23初试科目、23复试详情、参考书目、各科目考情分析、各专业考情分析。 正文2178字,预计阅读:6分…...
IL汇编 ldarg 指令学习
IL汇编代码, .assembly extern mscorlib {} .assembly MathLib {.ver 1 : 0 : 1 : 0 }.module MathLib.dll.namespace MyMath { .class public ansi auto MathClass extends [mscorlib]System.Object{ .method public int32 GetSquare(int32) c…...
【ARM Cache 系列文章 9 番外篇 -- ARMv9 系列 Core 介绍】
文章目录 ARMv9 系列CoreARM Cortex-A510 介绍ARM Cortex-A715ARM Cortex-A720 ARMv9 系列Core 2021年5月Arm公布了其最新3款CPU和3款GPU核心设计,三款新CPU分别是旗舰核心Cortex-X2、高性能核心Cortex-A710、高能效核心Cortex-A510 CPU,三款新GPU核心则…...
章节7:Burp Intruder模块
章节7:Burp Intruder模块 参考资料 https://portswigger.net/burp/documentation/desktop/tools/intruder 01 Intruder模块作用与原理 原理 http://xxx.xx.com/bbs/index.php?namewuyanzu&mottogo 对请求参数进行修改,分析响应内容࿰…...
vue pc端项目el-upload上传图片时加水印
html代码: <a-uploadclass"avatar-uploader"list-type"picture-card":file-list"uploadFileList":custom-request"uploadDoneHandle":before-upload"beforeUpload":remove"removeHandle"v-decorat…...
ubuntu中redis+mysql安装使用
pip -V 回车(大写V):python包库安装路径 python -m site: python查找路径 1、redis ubuntu安装redis System has not been booted with systemd as init system (PID 1). Cant operate;该问题是systemctl start redis报错&#…...
若依-plus-vue启动显示Redis连接错误
用的Redis是windows版本,6.2.6 报错的主要信息如下: Failed to instantiate [org.redisson.api.RedissonClient]: Factory method redisson threw exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect t…...
【C++11智能指针】
c智能指针 手动管理内存很容易造成内存泄漏,现代c的智能指针可以在很大程度上帮我们缓解这个问题,降低我们的手动管理内存的心智负担,智能指针有好几种,比如shared_ptr、unique_ptr还有weak_ptr 共享指针shared_ptr 共享指针会…...
如何实现Excel中多级数据联动
摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在类Excel表格应用中,常用的需求场景是根据单元格之间的数据联动&…...
使用Pytest集成Allure生成漂亮的图形测试报告
目录 前言 依赖包安装 Pytest Allure Pytest Adaptor 改造基于Pytest的测试用例 生成测试报告 运行测试 生成测试报告 打开测试报告 资料获取方法 前言 之前写过一篇生成测试报告的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架ÿ…...
【智算中心+数据中心+机房+算力】1300余份AIDC智算中心+IDC数据中心+机房建设+算力方案报告合集
AIDC智算中心是AI时代的关键基础设施,其高功率密度、液冷散热、RDMA网络及算力池化调度等特征,与传统IDC形成显著差异。在政策强力支持、市场需求爆发、技术持续迭代的背景下,我国AIDC产业正迎来规模化、绿色化、普惠化的战略机遇期。企业应把…...
Linux上免费运行Photoshop CC的终极解决方案:3个简单步骤实现专业图像编辑
Linux上免费运行Photoshop CC的终极解决方案:3个简单步骤实现专业图像编辑 【免费下载链接】Photoshop This program written in C will help you to automatically install everything you need and configure it so that you can run Photoshop on your Linux wit…...
BallonTranslator:3分钟完成漫画翻译的终极AI工具,完全免费开源!
BallonTranslator:3分钟完成漫画翻译的终极AI工具,完全免费开源! 【免费下载链接】BallonsTranslator 深度学习辅助漫画翻译工具, 支持一键机翻和简单的图像/文本编辑 | Yet another computer-aided comic/manga translation tool powered by…...
小店想做私域推客,先把系统搭好
很多实体店、微信小店一上来就急着拉推客、发海报、搞裂变,忙活一圈下来:订单对不上、佣金算不清、推客留不住、老客户也反感,最后推客没做成,私域也做乱了。根本原因只有一个:系统没搭好,就急着上马干。私…...
别再只盯着Starlink了!手把手拆解LEO卫星组网的核心难题:以DT-DVTR为例看‘虚拟拓扑’如何简化动态路由
低轨卫星组网的路由革命:用虚拟拓扑破解动态网络难题 想象一下在纽约和东京之间架设一条光纤,但这条光纤每90分钟就会自动断裂并重新连接——这就是低轨卫星(LEO)网络面临的核心挑战。当Starlink等巨型星座将数千颗卫星送入550公里…...
计算机视觉基石:6大CNN模型的创新与突破
计算机视觉基石:6大CNN模型的创新与突破 本文详细解析了计算机视觉基石:6大CNN模型的创新与突破,内容如下: 目录1. LeNet(90/98)诞生于1990年,在手写体字符识别领域创造性的引入了卷积神经网…...
DLSS Swapper终极指南:一键升级游戏画质的智能工具
DLSS Swapper终极指南:一键升级游戏画质的智能工具 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 还在为游戏画面模糊而烦恼吗?😕 还在等待游戏官方更新DLSS版本吗?DLSS…...
uniapp video播放海康RTSP流避坑指南:从黑屏、卡死到稳定运行12小时+
Uniapp视频监控开发实战:海康RTSP流长期稳定播放的工程化解决方案 在智能安防和工业物联网领域,实时视频监控的稳定性直接关系到业务连续性。当开发者选择Uniapp跨平台方案接入海康威视设备时,RTSP流媒体处理往往成为技术攻坚的重点。本文将分…...
AIAgent记忆泄漏导致LLM幻觉加剧?SITS2026现场演示2分钟定位+4步清除陈旧记忆链
第一章:SITS2026演讲:AIAgent长期记忆管理 2026奇点智能技术大会(https://ml-summit.org) 在SITS2026主会场的Keynote环节,AIAgent架构团队首次公开了面向生产级应用的长期记忆(Long-Term Memory, LTM)管理框架——C…...
Leather Dress Collection详细步骤:从SD1.5环境搭建到12个皮装模型调用
Leather Dress Collection详细步骤:从SD1.5环境搭建到12个皮装模型调用 1. 项目介绍 Leather Dress Collection是一个基于Stable Diffusion 1.5的LoRA模型集合,专门用于生成各种皮革服装风格的图像。这个集合包含了12个精心训练的LoRA模型,…...
