分享好友 最新动态首页 最新动态分类 切换频道
(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子句是最后被运行的。

最新文章
一个优秀的全面的建站人员的评判标准是什么
技能要求1. 技术能力:建站人员应具备扎实的编程基础,熟悉HTML、CSS、JavaScript等前端技术,同时了解后端语言如PHP、Python等。对于各种CMS(内容管理系统)和框架有深入的理解和实际操作经验。  2. 设计审美:优秀的建站人员应具备良
迅数F310浮游生物智能鉴定计数仪
Algacount F310是迅数科技2017年率先推出, 专为大中型企业、科研和监测机构设计的高端藻类智能鉴定、浮游生物计数仪。全新设计的软件架构,简洁、好用,融入更多图形界面,浮游生物数据库不仅增加品种和图片,而且重新校验、编辑,更为精细
【分享】永久免费chatGPT4.0接口——支持Ai绘画
自研大型永久免费使用4.0接口 Ai智能模型库支持绘画——编程——代码——论文——答题——游戏——语音——等【资源名称】:讯飞星火【资源版本】:2.014【资源大小】:58.6Mb【测试机型】:一加8【下载地址】:蓝奏云:https://fanxjx.lanz
龙头智能装备上市有这只(2024/12/17)
  智能装备龙头是什么?据南方财富网概念查询工具数据显示,智能装备龙头有:  天永智能:智能装备龙头  2024年第三季度,天永智能公司营业总收入同比增长-53.19%至7525.82万元;净利润为-2423.37万,同比增长-1008.51%,毛利润为102
有关摄影比赛策划书模板如何写(八篇)
微博最近成为了人们公共生活之中不可或缺的平台。这个以个人为单位的自媒体正在中国的社会中发挥出越来越大的影响力和冲击力。它不仅在很多方面对于传统的纸面或电子媒体构成了冲击,也对于新媒体的其他形态形成了冲击,它的功用正在前所未
推荐一款“小程序蜀山四川麻将外卦神器下载安装”确实真的有挂
本篇文章给大家谈谈怎样看出手机打牌开挂没,以及手机麻将怎么看出来是开挂对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。无需打开直接搜索微信;1.打开手机桌面微信APP,进入微信主页。2.下拉微信主页,找到四川麻将小程序。注意
瞪大眼睛看:什么是珠宝的优化、处理?
优化、处理、天然相信不少朋友都有这样的经验,在购买珠宝的时候经常听到一些词汇,如“处理”,“优化”,“天然”,那么,到底什么是“处理”,什么是“优化”,他它们有什么区别呢,国家标准中又是如何规定的呢?国标里的定义按国家标准
雷克萨斯屏幕黑屏是什么原因
车上空调显示 L0 意思是空调处于最低温度或最低运行速度。如果空调能显示温度数值但显示为 L0代表此时空调处于最大制冷模式能把车内温度降到最低一般最低能到 18℃。
最热明星机 Nexus 4 root/解锁工具放出
    的这款凭借着谷歌的血统、高配低价的诱人性价比显然成为了目前最热的明星机型,甚至连都无法抢过它的风头;不知大家翘首以盼的 4是否已经到手,反正XDA论坛上的们已经抢先发布了针对于它的结合 root/解锁/Recovery等玩
高质量假期要有AI 用三星Galaxy S24系列点亮暑期旅途
暑期将至,许多用户已经开始计划一场精彩的假期旅行。数字化时代,智能是旅行中不可或缺的得力助手,而全新的三星 S24系列,以其卓越的性能、强大的影像系统和创新的AI体验,成为暑期旅行的好拍档。无论是拍摄美丽风景、探索未知事物,还是
相关文章
推荐文章
发表评论
0评