分享好友 最新动态首页 最新动态分类 切换频道
(5) avg函数是否可以用sum除以count代替?_SQL高级功能:窗口函数
2024-12-26 22:03

开始学习前,也是作为一个提醒,避免走弯路。先确认下自己的mysql版本是什么,mysql8.0以后才开始支持窗口函数。

1、什么是窗口函数

窗口函数,也叫OLAP函数(Online Anallytical Processing,联机分析处理,可以对数据库数据进行实时分析处理。“窗口”,是范围的意思。

2、如何使用窗口函数

窗口函数的基本语法如下

例如下图,是班级表中的内容

解答

查询结果

接下来,就结合实例,给大家介绍几种窗口函数和窗口函数的用法。

1专用窗口函数,包括rank, dense_rank, row_number等专用窗口函数。

  • rank函数:相同值排名相同,下一排名根据之前的记录个数而定
  • dense_rank函数:相同值排名相同,排名连续不间断
  • row_number函数:不管值是否相同,依次连续排名

对上面专用窗口函数的使用描述似乎不太好理解,有点懵。没关系,我们通过一个例子来厘清其中的区别。

题目:查询所有学生按成绩排名情况

解答

得到结果

rank函数:这个例子中是5位,5位,5位,8位,也就是如果有并列名次的行,会占用下一名次的位置。比如正常排名是1,2,3,4,但是现在前3名是并列的名次,结果是1,1,1,4。
dense_rank函数:这个例子中是5位,5位,5位,6位,也就是如果有并列名次的行,不占用下一名次的位置。比如正常排名是1,2,3,4,但是现在前3名是并列的名次,结果是1,1,1,2。
row_number函数:这个例子中是5位,6位,7位,8位,也就是不考虑并列名次的情况。比如前3名是并列的名次,排名是正常的 1,2,3,4。

最后,需要强调的一点是:在上述的这三个专用窗口函数中,函数后面的括号不需要任何参数,保持()空着就可以。

趁热打铁,我们再来看几道经典的面试题。

题目1:在上面的班级表(class)中,查询每个班级中学生成绩最大值所在行的数据

方法一:关联子查询

得到结果

① 第一步,用rank窗口函数。先求得按班级分组并把成绩倒序排序的结果

得到结果

最终查询结果

题目2:查询各个班级成绩前两名的记录

解答

得到结果

聚和窗口函数和上面提到的专用窗口函数用法完全相同,只需要把聚合函数写在窗口函数的位置即可,但是函数后面括号里面不能为空,需要指定聚合的列名。

下面通过具体的题目来体会一下。

题目:按成绩升序排序后查询以下结果:当前累计成绩总分、成绩平均分、最高分成绩、最低分成绩、统计人数以及当前记录之前两位同学的平均成绩

解答

查询结果是

(1) <窗口函数>里面可以放以下两种函数① 专用窗口函数
rank:相同值排名相同,下一排名根据之前的记录个数而定
dense_rank:相同值排名相同,排名连续不间断
row_number:不管值是否相同,依次连续排名② 聚合函数
sum:求和
avg:求平均值
max:求最大值
min:求最小值
count:计数

(2) 窗口函数的“窗口”可以进行“移动”,变成“窗口平移函数”

2. 窗口函数具备的功能

1)同时具有分组(partition by)和排序(order by)的功能

2)不减少原表的行数,所以经常用来在每组内排名(区别于group by

group by分组汇总后改变了表的行数,一行只有一个类别。而partiition by和rank函数不会减少原表中的行数。例如下面统计每个班级的人数。

4. 使用窗口函数的注意事项

1)窗口函数原则上只能写在select子句中
2)partition子句可是省略,省略就是不指定分组。
3)注意各窗口函数的区别和使用条件

最后还要强调的是,尤其当语句复杂时,要牢记之前一直说的SQL语句书写顺序和运行顺序。在运行顺序中,select子句是最后被运行的。

最新文章
汕头怎么制作微信公众号汕头网站关键词优化排名怎么做汕头网站开发价格汕头推荐的关键词怎么优化汕头百度关键词快速排名汕头做微信公众号
龙腾网络网站制作|网络推广一物一码系统|微信商城制作电话:13292208571(微信)汕头网站制作推广公司 汕头怎样建一个微信公众号 汕头如何做微信公众号? 汕头整站优化网站建设 汕头微信制作公众号 汕头如何建立公众号微信 汕头微信公众号制
电商排名前十名品牌都有哪些?
  随着互联网的发展,人们购物不再局限于实体店铺,方便又快捷的网上购物形式逐渐进入到了大家的视野,而电商已经成为了人们生活中一个不可分割的需求,那么大家对于电商品牌都了解多少呢?下面小编就来为大家盘点盘点电商排名前十名的品
普宁屋顶漏水维修电话〈免费上门〉普宁市屋顶防水补漏师傅
不砸砖、不砸墙;免砸砖防水补漏技术,2小时快速解决漏水问题,超长保修期。漏水维修服务项目:别墅房顶漏水、墙面发霉、屋顶渗水、防水查漏、卫生间漏水、卫生间墙面渗水、防水施工、厂房天面渗水、墙壁发霉、房顶漏水、高压注浆堵漏、厨房防
东莞一键式自助搭建,开启您的商业新篇章
东莞自助搭建制作服务,助您轻松打造个性化商业,开启便捷高效的营销之旅。一站式解决方案,让您的企业快速上线,抢占市场先机。自助搭建制作概述东莞自助搭建制作的优势东莞地区热门的自助搭建制作推荐东莞自助搭建制作的实用建议在的数字
蓝牙串口spp软件
蓝牙串口spp软件,一般又称SPP蓝牙串口。一款为蓝牙相关开发人员量身定制的蓝牙串口调试工具。1. 支持循环搜索设置,自动确认UUID,实时显示搜索到的设备信息(信号强度、MAC地址、配对等)。2. 支持根据设备名称、MAC地址、信息强度、是否
黄石百度爱采购托管代运营
解答:百度爱采购的优点有哪些?对中小企推广有什么优势?百度爱采购是百度集团旗下的 B2B 竖直搜索模块,致力于协助客户更切实解决企业发展趋势难点。服务平台靠着百度强劲的搜索技术性,服务项目大量客户,并运用AI技术性,结合要求案件
SDCMS红色系网络公司网站 v2.7.1.9
SDCMS红色系网络公司网站是基于SDCMS四合一企业网站管理系统开发的模板,适合企业站,带手机版。SDCMS四网合一企业网站管理系统是一个以PHP+MySQL/Sqlite进行开发的四网合一网站源码。四网合一企业网站管理系统支持在线升级(支持跨版本)
搞笑配音:恐龙大战怪兽之王,看完精彩又搞笑!
{{if !data.isVip && data.isActText}}{{else if !data.isVip && !data.isActText}}{{else}}{{if !data.isNormalVip}}{{if data.expiredVip && data.isActText}}{{else if data.expiredVip && !data.isActText}}{{else}}{{/if}}{{else if d
盘点一款微信小程序辅助器免费
您好:微信小程序辅助器免费这款游戏可以开挂的,确实是有卦的,咨询加V:X【95559344】微信小程序辅助器免费2025已更新(2025已更新)微信小程序辅助器免费工具全国可开地区:北京市(东城区、西城区、崇文区、宣武区、朝阳区、丰台区、石
百会在线文档,重塑办公文档管理的未来新篇章
百会在线文档是一款重塑办公文档管理的创新产品。它通过先进的技术和智能管理,为用户提供便捷、高效的文档处理体验。百会在线文档致力于优化办公流程,实现文档管理的智能化和高效化,助力企业和个人轻松应对日益增长的文档处理需求。百会
相关文章
推荐文章
发表评论
0评