当前位置: 首页 > news >正文

mysql-窗口函数一

目录

一、感受一下分组与窗口函数的区别

二、滑动窗口(子窗口)大小的确认

2.1 分组函数下order by使用

 2.2 窗口子句

2.3 执行流程

三、函数使用

窗口函数需要mysql的版本大于等于8才行,可以先检查一下自己的mysql版本是多少

select version();

准备一下表数据

drop table if exists student;
create table student
(cid    varchar(50),sname  varchar(50),course varchar(50),score  int
) character set utf8mb4;-- 插入两个班级的学生数据(每个学生包含4门课程成绩)
INSERT INTO student (cid, sname, course, score)
VALUES
-- 班级01
('01', '张三', '语文', 85),
('01', '张三', '数学', 92),
('01', '张三', '英语', 78),
('01', '张三', '物理', 88), 
('01', '李四', '语文', 76),
('01', '李四', '数学', 88),
('01', '李四', '英语', 95),
('01', '李四', '化学', 90), 
('01', '王五', '语文', 65),
('01', '王五', '数学', 73),
('01', '王五', '英语', 82),
('01', '王五', '生物', 77), -- 班级02
('02', '赵六', '语文', 90),
('02', '赵六', '数学', 67),
('02', '赵六', '英语', 88),
('02', '赵六', '地理', 85), 
('02', '陈七', '语文', 72),
('02', '陈七', '数学', 85),
('02', '陈七', '英语', 91),
('02', '陈七', '历史', 89), 
('02', '周八', '语文', 68),
('02', '周八', '数学', 79),
('02', '周八', '英语', 84),
('02', '周八', '政治', 83); 

一、感受一下分组与窗口函数的区别

假设现在有一个需求需要统计每个学生的各科总成绩,我们分别使用分组group by 和窗口函数 partion by 来试一下

先来看看group by

select cid, sname, sum(score)
from student
group by sname;

 这里是以每个学生的名字来分组的,显然这里只有六个学生,那么就只会有六行数据

接下来我们看看 partion by的使用

select *,sum(score) over (partition by sname)
from student;

从行来看:可以很明显的感受到,分组group by是先分组在把数据进行压缩,但是窗口函数是保留了并没有对行数进行压缩

从列来看:也是发现一个mysql5.7和mysql8的区别,因为我本机是5.7,在云服务器上面用了mysql8,今天惊奇的发现mysql8,不是分组列,不能被展示,意思就是我只能展示两列,一列是sname(分组列),聚合函数一列

也就是说group by生成的表与原有的表行数和列数都不相同

 

二、滑动窗口(子窗口)大小的确认

2.1 分组函数下order by使用

先说结论,排序只会在当前窗口内进行排序

假设现在有一个需求,需要查询每个同学的各科成绩为降序排列

select sname, course, score, 
row_number() over (partition by sname order by score desc)
from student;

 2.2 窗口子句

窗口子句:控制每一行在可以滑动的子窗口的窗口的大小
起始行:N preceding/unbounded preceding
当前行:current row
终止行:N followding/unbounded preceding

举例:rows between 上边界 and 下边界

#从之前的所有行到当前行
rows between unbounded preceding and current row
#从前面的两行到当前行
rows between 2 preceding and current row
#从当前的所有行到之后的所有行
rows between current row and unbounded following
#从当前行到后面一行
rows between current row and 1 following

注意:

如果排序子句后面缺少窗口子句: 窗口规范默认是:#从之前的所有行到当前行

rows between unbounded preceding and current row

排序子句和窗口子句都缺少:窗口规范就是:分组的窗口大小

rows between unbounded preceding and unbounded following

2.3 执行流程

  1. 先通过partion by 和order by 定义整个分组的大窗口
  2. 通过orws 子句来定义每一行数据的滑动窗口
  3. 对每行的小窗口内的数据执行并生成新的列

三、函数使用

3.1 排序类

在 SQL 中,rank(),dense_rank(),row_number 是窗口函数,它们的 ​​排序依据​​ 完全由 over子句中的 order by 字段决定的!!!

函数重复值处理逻辑示例(分数为 90 的两人)
​ROW_NUMBER()​为每行分配唯一序号,即使值相同也按顺序编号。90 → 1, 90 → 2
​RANK()​相同值分配相同排名,后续排名跳跃。90 → 1, 90 → 1 → 下一行为 3
​DENSE_RANK()​相同值分配相同排名,后续排名连续。90 → 1, 90 → 1 → 下一行为 2

3.2 聚合类

3.3 跨行类

相关文章:

mysql-窗口函数一

目录 一、感受一下分组与窗口函数的区别 二、滑动窗口(子窗口)大小的确认 2.1 分组函数下order by使用 2.2 窗口子句 2.3 执行流程 三、函数使用 窗口函数需要mysql的版本大于等于8才行,可以先检查一下自己的mysql版本是多少 select ve…...

HashMap,高效 哈希

java HashMap 有独特的设计。 哈希表数组的每个位置是一个哈希桶&#xff0c;里面由链表或红黑树实现。&#xff08;> 8 或 < 6 的变化时&#xff0c;避免频繁切换&#xff09; 容量&#xff08;capacity&#xff09;&#xff1a; 哈希表中桶&#xff08;bucket&#xf…...

PyTorch入门------训练图像分类器

前言 1. 操作步骤 2. 数据集 一、公共部分 1.加载并归一化 CIFAR10 2.定义卷积神经网络 二、训练、保存模型参数部分 train_and_save.py 3.定义损失函数和优化器 4.训练网络(使用 CPU 或者 GPU) 5.保存训练好的模型参数 三、加载模型参数、模型推理部分 load_and_infer.py 6…...

DeepSeek V3 架构创新:大规模MoE与辅助损失移除

DeepSeek 团队推出的全新 DeepSeek V3 模型版本,相比之前的 V2 版本,V3 的参数量从两千多亿一跃攀升到 6710 亿,近乎实现了参数规模的三倍增长。如此宏大的模型规模并不只是简单地堆砌参数,而是建立在稀疏混合专家(Mixture-of-Experts,MoE)结构之上。得益于 MoE 的稀疏激…...

MCP 多工具协作链路设计:打造真正的智能工作流

目录 [TOC] &#x1f680; MCP 多工具协作链路设计&#xff1a;打造真正的智能工作流 &#x1f31f; 多工具协作链核心思想 &#x1f6e0;️ 设计示例&#xff1a;智能文档分析系统 &#x1f4d1; 1. MCP Server 定义多工具 list_txt_files.py read_file_content.py su…...

某修改版软件,已突破限制!

聊一聊 现在很多输入法都带有广告。 用着用着&#xff0c;不是提示升级就是弹出资讯。 特别是忙的时候&#xff0c;很影响心情。 今天给大家分享一款干净的输入法软件。 希望能你喜欢。 软件介绍 Q拼音输入法 工具我们下载后&#xff0c;进行安装。 双击打开&#xff0c…...

透视Linux内核:深度剖析Socket机制的本质

在Linux操作系统构建的网络世界里&#xff0c;Socket 宛如纵横交错的交通枢纽&#xff0c;承担着不同应用程序间数据往来的重任。无论是日常浏览网页时&#xff0c;浏览器与 Web 服务器间信息的快速交互&#xff1b;还是畅玩网络游戏过程中&#xff0c;玩家操作指令与游戏服务器…...

PostgreSQL数据表操作SQL

数据表操作 创建表 CREATE TABLE t_test(id SERIAL PRIMARY KEY,name varchar(30),birthday date);修改表名 ALTER TABLE t_test RENAME TO t_test1;添加列 ALTER TABLE t_test1 ADD COLUMN score numeric(5,2);删除列 ALTER TABLE t_test1 DROP COLUMN score;修改数据类型 AL…...

OpenAI最新发布的GPT-4.1系列模型,性能体验如何?

简单来说,这次GPT-4.1的核心思路就是:更实用、更懂开发者、更便宜!OpenAI这次没搞太多花里胡哨的概念,而是实实在在地提升了大家最关心的几个点:写代码、听指令、处理超长文本,而且知识库也更新到了2024年6月。 写代码。要说这次GPT-4.1最亮眼的地方,可能就是写代码这块…...

2025五一数学建模C题完整分析论文(共36页)(含模型、可运行代码、数据)

2025年五一数学建模C题完整分析论文 摘要 一、问题分析 二、问题重述 三、模型假设 四、符号定义 五、 模型建立与求解 5.1问题1 5.1.1问题1思路分析 5.1.2问题1模型建立 5.1.3问题1代码 5.1.4问题1求解结果 5.2问题2 5.2.1问题2思路分析 5.2.2问题…...

Vue2基础速成

一、准备工作 首先下载vue2的JavaScript库&#xff0c;并且命名为vue.min.js 下载链接&#xff1a;https://cdn.jsdelivr.net/npm/vue2&#xff08;若链接失效可去vue官网寻找&#xff09; CTRLS即可下载保存 文件目录结构 二、使用操作原生DOM与使用VUE操作DOM的便捷性比较…...

Java大厂硬核面试:Flink流处理容错、Pomelo JVM调优、MyBatis二级缓存穿透防护与Kubernetes服务网格实战解析

第二幕&#xff1a;系统架构设计 面试官&#xff1a;设计一个处理10万QPS的秒杀系统需要的技术方案和技术选型 xbhog&#xff1a;采用基础架构&#xff1a; 存储层&#xff1a;Redis限流分布式锁服务层&#xff1a;Sentinel流量控制消息层&#xff1a;RocketMQ事务消息保证最…...

Python实现简易博客系统

下面我将介绍如何使用Python实现一个简易的博客系统,包含前后端完整功能。这个系统将使用Flask作为Web框架,SQLite作为数据库,并包含用户认证、文章发布、评论等基本功能。 1. 系统架构设计 技术栈选择 ​​后端​​:Flask (Python Web框架)​​数据库​​:SQLite (轻量…...

【T型三电平仿真】SPWM调制

自然采样法和规则采样法的特点和计算 https://blog.csdn.net/u010632165/article/details/110889621 单极性和双极性的单双体现在什么地方 单极性和双极性的单双是指载波三角波的极性 为什么simulink进行电路仿真时&#xff0c;都需要放置一个powergui模块 任何使用SimPow…...

Astral Ascent 星界战士(星座上升) [DLC 解锁] [Steam] [Windows SteamOS macOS]

Astral Ascent 星界战士&#xff08;星座上升&#xff09; [DLC 解锁] [Steam] [Windows & SteamOS & macOS] 需要有游戏正版基础本体&#xff0c;安装路径不能带有中文&#xff0c;或其它非常规拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章…...

Ubuntu20.04如何优雅的安装ROS 1(胎教级教程)

1、USTC的源&#xff1a; sudo sh -c . /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ lsb_release -cs main" > /etc/apt/sources.list.d/ros-latest.list2、设置的ROS源添加密钥&#xff1a; sudo apt-key adv --keyserver …...

terraform生成随机密码

在 Terraform 中生成安全随机密码可以通过 random_password 资源实现&#xff0c;以下是完整实现方案及安全实践&#xff1a; 基础实现 (生成随机密码) terraform {required_providers {random {source "hashicorp/random"version "~> 3.5.1" # 使…...

一个linux系统电脑,一个windows电脑,怎么实现某一个文件夹共享

下载Samba linux主机名字不能超过15个字符 sudo dnf install samba samba-client -y 创建共享文件夹 sudo mkdir /shared 配置文件 vim /etc/samba/smb.conf [shared] path /shared available yes valid users linux电脑用户 read only no browsable yes p…...

等保系列(一):网络安全等级保护介绍

一、基本概念 网络安全等级保护&#xff08;以下简称&#xff1a;等保&#xff09;是根据《中华人民共和国网络安全法》及配套规定&#xff08;如《信息安全技术 网络安全等级保护基本要求》等&#xff09;建立的系统性安全防护机制&#xff0c;要求网络运营者根据信息系统的重…...

【专题五】位运算(2)

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录&#xff0c;按专题划分每题主要记录&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代码&#xff1b;&#xff08;2&#xff09;优质解法 优质代码&#xff1b;&#xff…...

【2025五一数学建模竞赛A题】 支路车流量推测问题|建模过程+完整代码论文全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的美赛O奖、国赛国一的数学建模团队&#xff0c;我们将为你带来本次数学建模竞赛的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过程和解析&#xff0c…...

案例:自动化获取Web页面小说(没钱修什么仙)——selenium

目录 前言一、目标即结果1. 目标&#xff1a;2. 提前了解网页信息3. 结果 二、逐步分析1 . selenium启动2. 获取所有章节3.打开对应章节链接&#xff0c;获取小说文本4. 内容写入本地文件 三、完整代码四、声名 前言 提示&#xff1a;通过案例掌握selenium语法 涉及技术&#…...

硬件工程师面试常见问题(11)

第五十一问&#xff1a;器件手册的翻译题目 要学英语啊&#xff0c;孩子。 第五十二问&#xff1a;二极管三极管常识题 1.二极管的导通电压一般是 0.7V 2.MOS管根据掺杂类型可以分为 NMOS和PMOS 3.晶体三极管在工作时,发射结和集电结均处于正向偏置,该晶体管工作在一饱和态。…...

TTL、LRU、LFU英文全称及释义

以下是 TTL、LRU 和 LFU 的英文全称及其简要解释&#xff1a; 1. TTL 全称&#xff1a;Time To Live&#xff08;存活时间&#xff09;含义&#xff1a; 表示数据在缓存或存储中的有效存活时间&#xff0c;过期后自动删除。 Redis 示例&#xff1a;SET key value EX 60&#x…...

本地部署 n8n 中文版

本地部署 n8n 中文版 0. n8n的核心价值1. 本地部署 n8n 中文版2. 访问 n8n 在技术团队寻求高效自动化解决方案的今天&#xff0c;n8n 作为一款安全的工作流自动化平台脱颖而出&#xff01;它将代码的灵活性与低代码的便捷性深度融合&#xff0c;为开发者提供了独特的工具选择。…...

蓝桥杯比赛

蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心主办&#xff0c;国信蓝桥教育科技&#xff08;北京&#xff09;股份有限公司承办的计算机类学科竞赛。以下是其相关信息&#xff1a; 参赛对象 具有正式全日制学籍且符合相关科目报名要求的研究生、本科生…...

【Linux】Makefile

Makefile常用用法介绍。 部分图片和经验来源于网络&#xff0c;还有正点原子的Linux驱动开发教程&#xff0c;若有侵权麻烦联系我删除&#xff0c;主要是做笔记的时候忘记写来源了&#xff0c;做完笔记很久才写博客。 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 1…...

【工具】Windows批量文件复制教程:用BAT脚本自动化文件管理

一、引言 在日常开发与部署过程中&#xff0c;文件的自动化复制是一个非常常见的需求。无论是在构建过程、自动部署&#xff0c;还是备份任务中&#xff0c;开发者经常需要将某个目录中的 DLL、配置文件、资源文件批量复制到目标位置。相比使用图形界面的复制粘贴操作&#xf…...

字节一面:后端开发

前言 这是我字节一面的回忆录&#xff0c;可能有些不全。 由于博主是Java面试Go岗&#xff0c;操作系统和计网问的还是比较多。 个人感觉字节很喜欢追问&#xff0c;博主被追问拷打的找不到北了&#xff0c;总结还是学的太浅了。 面试官给我的建议&#xff1a;再更深挖一些…...

西式烹饪实训室建设路径

在餐饮行业持续变革与教育信息化快速发展的当下&#xff0c;西式烹饪实训室的智能化建设成为提升教学质量、培养适应新时代需求烹饪人才的关键举措。通过引入先进技术&#xff0c;创新教学与管理模式&#xff0c;为学生打造更高效、更具沉浸感的学习环境。凯禾瑞华——实训室建…...

[更新完毕]2025五一杯A题五一杯数学建模思路代码文章教学:支路车流量推测问题

完整内容请看文章最下面的推广群 支路车流量推测问题 摘要 本文针对支路车流量推测问题展开研究&#xff0c;通过建立数学模型解决不同场景下的车流量分析需求。 针对问题一&#xff08;Y型道路场景&#xff09;&#xff0c;研究两支路汇入主路的车流量推测。通过建立线性增长…...

2025年五一杯C题详细思路分析

C题 社交媒体平台用户分析问题 问题背景 近年来&#xff0c;社交媒体平台打造了多元化的线上交流空间和文化圈&#xff0c;深刻影响着人们社交互动与信息获取。博主基于专业知识或兴趣爱好等创作出高质量内容&#xff0c;吸引并获得用户的关注。用户可以随时通过观看、点赞、…...

攻防世界 dice_game

dice_game ​​​​​​dice_game (1) motalymotaly-VMware-Virtual-Platform:~/桌面$ file game game: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]254…...

如何进行 JVM 性能调优?

进行 JVM 性能调优是一个系统性的过程&#xff0c;旨在提高 Java 应用程序的响应速度、吞吐量、降低资源消耗&#xff08;如 CPU 和内存&#xff09;以及提高稳定性。 以下是一个通用的 JVM 性能调优步骤和常用方法&#xff1a; 第一步&#xff1a;明确目标与建立基线 (Defin…...

艺华直播 5.0 |专注于提供港澳台及央视频道的电视直播应用,加载快,播放流畅

艺华直播是一款专注于提供港澳台及央视频道的电视直播应用。它以加载速度快、播放流畅不卡顿著称&#xff0c;是目前少数能够稳定观看港澳台频道的应用之一。此次分享的版本为测试版&#xff0c;支持4K秒播&#xff0c;带来极致的观看体验。尽管该应用已开始收费&#xff0c;但…...

【软件设计师:复习】上午题核心知识点总结(三)

一、编译原理(基础题) 1.编译过程概述(必考) 编译过程分为六个阶段,各阶段核心任务与典型输出如下: 阶段核心任务输入输出关键方法/工具词法分析将字符流转换为标记(Token)流源代码字符串Token序列(如<ID, "x">)正则表达式、有限自动机(DFA/NFA)…...

SAE极速部署弹性微服务商城——实验记录

SAE极速部署弹性微服务商城 本实验带您体验在SAE上快速部署一个弹性的在线商城微服务应用&#xff0c;使得终端用户可以通过公网访问该商城&#xff0c;并进行压力测试以验证其性能与稳定性。 文章目录 SAE极速部署弹性微服务商城使用SAE部署应用有哪些优势&#xff1f; 对商城…...

内存 “舞台” 上,进程如何 “翩翩起舞”?(转)

在数字世界里&#xff0c;计算机的每一次高效运转都离不开内存与进程的默契配合。内存&#xff0c;恰似一座宏大且有序的舞台&#xff0c;为进程提供了施展拳脚的空间。而进程&#xff0c;则如同舞台上的舞者&#xff0c;它们在内存的舞台上&#xff0c;遵循着一套复杂而精妙的…...

产品手册小程序开发制作方案

公司产品手册小程序系统主要是为了解决传统纸质或PDF格式手册更新成本高、周期长&#xff0c;难以及时反映最新产品信息。线下分发效率低&#xff0c;线上分享体验差&#xff0c;不利于品牌推广。传统手册单向传递信息&#xff0c;无法与用户进行互动&#xff0c;企业难以了解用…...

【dify—8】Agent实战——占星师

目录 一、创建Agent应用 二、创建提示词 三、创建变量 四、添加工具 五、发布更新 六、运行 第一部分 安装difydocker教程&#xff1a;【difydocker安装教程】-CSDN博客 第二部分 dock重装教程&#xff1a;【dify—2】docker重装-CSDN博客 第三部分 dify拉取镜像&#xff…...

Redis的键过期删除策略与内存淘汰机制详解

Redis 的键过期删除策略与内存淘汰机制详解 一、键过期删除策略 Redis 通过 定期删除&#xff08;Active Expire&#xff09; 和 惰性删除&#xff08;Lazy Expire&#xff09; 两种方式结合&#xff0c;管理键的过期清理。 1. 惰性删除&#xff08;Lazy Expire&#xff09; …...

数据结构——树(中篇)

今日名言&#xff1a; 人生碌碌&#xff0c;竞短论长&#xff0c;却不道枯荣有数&#xff0c;得失难量 上次我们讲了树的相关知识&#xff0c;接下来就进一步了解二叉树吧。本文为个人学习笔记&#xff0c;如有侵权&#xff0c;请 联系删除&#xff0c;如有错误&#xff0c;欢…...

实验三 软件黑盒测试

实验三 软件黑盒测试使用测试界的一个古老例子---三角形问题来进行等价类划分。输入三个整数a、b和c分别作为三角形的三条边&#xff0c;通过程序判断由这三条边构成的三角形类型是等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角形)。其中要求输入变量&#x…...

PHP-Cookie

Cookie 是什么&#xff1f; cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时&#xff0c;这台计算机将会发送 cookie。通过 PHP&#xff0c;您能够创建并取回 cookie 的值。 设置Cookie 在PHP中&#xff0c;你可…...

提升采购管理,打造核心竞争力七步战略采购法详解P94(94页PPT)(文末有下载方式)

资料解读&#xff1a;《提升采购管理&#xff0c;打造核心竞争力 —— 七步战略采购法详解》 详细资料请看本解读文章的最后内容。 在当今竞争激烈的商业环境中&#xff0c;采购管理已成为企业打造核心竞争力的关键环节。这份文件围绕七步战略采购法展开&#xff0c;深入剖析了…...

单片机-89C51部分:13、看门狗

飞书文档https://x509p6c8to.feishu.cn/wiki/LefkwDPU7iUUWBkfKE9cGLvonSh 一、作用 程序发生死循环的时候&#xff08;跑飞&#xff09;&#xff0c;能够自动复位。 启动看门狗计数器->计数器计数->指定时间内不对计数器赋值&#xff08;主程序跑飞&#xff0c;无法喂…...

基于MyBatis的银行转账系统开发实战:从环境搭建到动态代理实现

目标&#xff1a; 掌握mybatis在web应用中怎么用 mybatis三大对象的作用域和生命周期 ThreadLocal原理及使用 巩固MVC架构模式 为学习MyBatis的接口代理机制做准备 实现功能&#xff1a; 银行账户转账 使用技术&#xff1a; HTML Servlet MyBatis WEB应用的名称&am…...

纹理采样+光照纹理采样

普通纹理显示 导入纹理 1.将纹理拷贝到项目中 2.配置纹理 纹理显示原理 原始纹理&#xff08;边长是&#xff09;&#xff0c;如果原始图的边长不是&#xff0c;游戏引擎在运行时&#xff0c;会自动将 纹理的边长补偿为&#xff0c;所以补偿是有损耗的&#xff08;纹理不一定是…...

408真题笔记

2024 年全国硕士研究生招生考试 计算机科学与技术学科联考 计算机学科专业基础综合 &#xff08;科目代码&#xff1a;408&#xff09; 一、单项选择题 第 01&#xff5e;40 小题&#xff0c;每小题 2 分&#xff0c;共 80 分。下列每小题给出的四个选项中&#xff0c;只有一个…...

【Shell 脚本编程】详细指南:第一章 - 基础入门与最佳实践

Shell 脚本编程完全指南&#xff1a;第一章 - 基础入门与最佳实践 引言&#xff1a;Shell 脚本在现代开发中的重要性 Shell 脚本作为 Linux/Unix 系统的核心自动化工具&#xff0c;在 DevOps、系统管理、数据处理等领域扮演着关键角色。本章将系统性地介绍 Shell 脚本的基础知…...