iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库基础篇SQL窗口函数示例解析教程
  • 220
分享到

MySQL数据库基础篇SQL窗口函数示例解析教程

2024-04-02 19:04:59 220人浏览 独家记忆
摘要

目录本文简介正文介绍聚合函数 + over()排序函数 + over()ntile()函数 + over()偏移函数 + over()本文简介 前段时间,黄同学写了一篇《Mysql窗

本文简介

前段时间,黄同学写了一篇《Mysql窗口实战》文章(文章如下),但是里面大多数是以实战练习为主,没有做详细的解释。

传送门:mysql实战窗口函数sql分析班级学生考试成绩及生活消费

于是,私信了月牙美女,看看她能否写一篇《窗口函数基础篇》,正好和之前那篇文章配套。这不,很快她就写好了,今天就给大家做一个分享,旨在和大家交流学习哦!

下面是月牙的玩笑简介,附带大图一张哦。

正文介绍

窗口函数,也被称为 “开窗函数”,MySQL8.0以后,就可以使用这些函数了。

我们在力扣刷题的时候,不难发现,比较困难的题目经常会涉及到窗口函数的应用,可以说窗口函数,是检验我们的SQL水平是否到达熟练水平的一个标尺。

窗口函数的格式为: 聚合函数+over()

窗口是描述over()括号内划定的内容,这个内容就是窗口函数的作用域,即操作的数据都在over()的范围内。

对于窗口函数,我个人的理解是给源数据开一扇可以滑动的窗口,在窗口移动的时候可以对其中的数据进行附加计算,如移动平均、分组排序等,窗口可以是一行多行甚至是所有行。

窗口函数,还可以对多组数据进行同步排序、聚合等运算,针对group by子句或where处理后的结果进行操作,只能写入select子句里。

灵魂画手上线,用excel简单做了个简易版的窗口函数的演示图:

在这里插入图片描述

聚合函数 + over()

基本语法:

sum/avg(被加工的字段名) over(partition by 分组的字段名 order by 排序的字段名 rows between … and …)

含义: 表示用partition by分组后针对每个组别进行求和或者求均值。


--包括本行以内和前3行:rows between 6 preceding and current row
--包括本行以内和后3行:rows between current row and 3 following
--包括本行和之前所有的行:rows between unbounded preceding and current row
--包括本行和之后所有的行:rows between current row and unbounded following
--从前3行到下1行(总共包含5行数据):rows between 3 preceding and 1 following

还有一些其它的聚合函数,例如max、min、count,它们的语法结构都类似。

排序函数 + over()

row_number()、rank()、dense_rank()这三个函数,都是对select查询到的结果进行排序,我们来看看这三者的区别。

row_number(): 为不重复的连续排序,从1开始,为查询到的数据依次生成不重复的序号进行排序

基本语法——row_number() over(order by 需要排序的字段asc/desc);

rank(): 为跳跃排序,结果相同的两个数据并列,为下一个数据空出所占的名次,即相同排名会占位

基本语法——rank() over(order by 需要排序的字段 asc/desc);

dense_rank(): 为有重复的连续排序,结果相同的两个数据并列,不为下一个数据空出所占的名次,即相同排名不占位

基本语法——dense_rank() over(order by 需要排序的字段 asc/desc);

我们用一张图来表示这三者间的关系:

在这里插入图片描述

ntile()函数 + over()

基本语法: ntile(n) over(partition by…order by…)其中n表示被切分的段数。

ntile(n)用于将分组数据平均切分成n块,如果切分的每组数量不均等,则第一组分得的数据更多。

ntile()函数通常用于比如求年级前10%成绩的学生,则n取值为10,用where筛选出第一组的数据。

偏移函数 + over()

基本语法1:前N行:lead(str, n, default) over(partition by …order by …)

基本语法2:后N行:lag(str, n, default) over(partition by …order by …)

str表示字段名,n表示前/后n行数据,默认值为1,default表示如果取值范围已经超过整个表的返回值,可以不填,不填默认返回N/A。

偏移函数,用于取出同一字段的前N行数据或后N行数据,作为单独的列,这里需要特别注意一下的是,lead代表前N行,lag代表后N行。

以上就是MySQL数据库基础篇窗口函数示例解析教程的详细内容,更多关于MySQL窗口函数基础的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库基础篇SQL窗口函数示例解析教程

本文链接: http://www.lsjlt.com/news/155438.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库基础篇SQL窗口函数示例解析教程
    目录本文简介正文介绍聚合函数 + over()排序函数 + over()ntile()函数 + over()偏移函数 + over()本文简介 前段时间,黄同学写了一篇《MySQL窗...
    99+
    2024-04-02
  • 【MySQL】数据库函数通关教程下篇(窗口函数专题)
    💁 个人主页:黄小黄的博客主页 ❤️ 支持我:👍 点赞 🌷 收藏 🤘关注 🎏 格言:一步一个脚印才能承接所谓的幸运 ...
    99+
    2023-09-02
    mysql 数据库 database 后端 数据库开发
  • 【MySQL基础篇】MySQL数据库安装教程
    ✅作者简介:大家好我是hacker707,大家可以叫我hacker,新星计划第三季python赛道Top1🏆 📃个人主页:hacker707的csdn博客 ...
    99+
    2023-09-06
    数据库 mysql
  • mysql数据库基础知识点的示例分析
    这篇文章将为大家详细讲解有关mysql数据库基础知识点的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。数据库一、 修改数据表添加一列:ALTERTABL...
    99+
    2024-04-02
  • javascript数据类型基础示例教程
    目录js中的输入输出语句js中的注释js中声名变量1、 js中用关键字var声明一个变量2、声明变量特殊情况3、变量命名规范js中的基本数据类型数字型 Number布尔值类型 Boo...
    99+
    2024-04-02
  • java理论基础函数式接口特点示例解析
    目录一、函数式接口是什么?二、函数式接口的特点三、default关键字四、JDK中的函数式接口举例五、自定义Comparator排序一、函数式接口是什么? 所谓的函数式接口,实际上就...
    99+
    2024-04-02
  • SQL Server 数据库基础编程详解
    目录Go批处理语句使用、切换数据库创建、删除数据库方法1、方法2(设置文件大小)、基本数据类型判断表或其他对象及列是否存在创建、删除表给表添加字段、修改字段、删除字段添加、删除约束插...
    99+
    2024-04-02
  • MySQL系列教程小白数据库基础
    目录1、基础概念与基础命令1)基础概念2)基础命令2、SQL语句的书写顺序和执行顺序1)一个完整SQL查询语句的书写顺序2)一个完整的SQL语句执行顺序3)关于select...
    99+
    2024-04-02
  • MongoDB数据库基础操作的示例分析
    这篇文章将为大家详细讲解有关MongoDB数据库基础操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为了保存网站的用户数据和业务数据,通常需要一个数据库。Mo...
    99+
    2024-04-02
  • 一篇文章带你了解MySQL数据库基础
    目录1. 数据库概念1.1 数据库是干嘛的?1.2 数据库和数据结构是啥关系?1. 数据库是一个软件/程序1.3 两种类型的数据库2. MySQL数据库2.1 MySQL数据...
    99+
    2024-04-02
  • javascript基础数据类型转换教程示例
    目录数值型转换为字符串类型字符串类型转换为数值型转换为布尔型结语数值型转换为字符串类型 方式说明案例toString()转成字符串var num =1; alert ( num.to...
    99+
    2024-04-02
  • MySQL窗口函数OVER使用示例详细讲解
    目录窗口函数测试数据表及数据窗口函数空窗口窗口中只有 ORDER BY窗口中只有 PARTITION BY 时同时有 PARTITION BY 与 ORDER BY窗口函数 OVER (PARTITION BY xxx ...
    99+
    2023-01-05
    MySQL 窗口函数 窗口函数OVER MySQL OVER函数
  • MySQL数据库事务transaction示例讲解教程
    目录1、什么是事务?2、和事务相关的语句只有这3个DML语句:insert、delete、update3、假设所有的业务都能使用1条DML语句搞定,还需要事务机制吗?4、事务的原理5...
    99+
    2024-04-02
  • mysql 8.0.15 安装图文教程及数据库基础
    MySQL软件安装及数据库基础,供大家参考,具体内容如下 一、任务 任务一 MySQL 软件安装及数据库基础 任务时间 请于2月26日22:00前完成,在本文章评论打卡。逾期尚未打卡的会被清退。 学习内...
    99+
    2024-04-02
  • SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的示例分析
    这篇文章主要介绍SQL数据库msdb.dbo.sp_send_dbmail函数发送邮件的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在推行系统中,时不时会有用户提出希望系统...
    99+
    2024-04-02
  • MySQL数据库基本操作的示例分析
    这篇文章主要介绍了MySQL数据库基本操作的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、数据库的安装这个就不在这里过多阐述了,...
    99+
    2024-04-02
  • Python基础常用内建函数图文示例解析
    目录abs()all()any()bin()bool()callable()abs() 返回一个数字的绝对值,它的参数可以是整数或者浮点数。举个例子: all() 参数为...
    99+
    2024-04-02
  • C语言基础函数用法示例详细解析
    目录函数函数定义函数一般格式C语言函数分类库函数库函数的分类库函数的学习自定义函数函数的参数实际参数形式参数函数的调用传值调用传址调用无参函数调用函数的声明和定义函数的声明函数的定义...
    99+
    2024-04-02
  • MySql数据类型教程示例详解
    目录1.简要概述2. MySQL数据类型详解1) 字符串类型2) 整数类型3)浮点数类型4)日期/时间类型1.简要概述 为什么要开通MySQL这个学习板块呢?因为这是一名数据分析师必...
    99+
    2024-04-02
  • python数据分析基础知识之shape()函数的使用教程
    目录python中shape()函数1、shape()输入参数2、判断数组的维度总结python中shape()函数 shape函数是numpy.core.fromnumeric中的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作