SQL轻松入门窗口函数
01hr前言
标题中有2个字让我在初次接触窗口函数时,真真切切明白了何谓高级?说来也是一番辛酸史!话说,我见识了窗口函数的强大后,便磨拳檫掌的要试验一番,结果在查询中输入语句,返回的结果却是报错,What?聪明的你,猜猜为啥?
害,原因可不就是MySQL的版本不匹配呗,我的原装是5。5,而窗口函数可运用的版本是MySQL8。0。经历了卸载重装,我对窗口函数的印象可是老深的啦!闲话到此,正题开始
窗口函数的高级不仅体现在版本要求高,还体现在功能上的简洁易懂。以Excel中vlookup作类比,窗口函数vlookup,groupbyorderby关联子查询indexmatch,虽不完全贴切,但能助你理解即可。
本文所涉及知识点,框架如下:
02hr什么是窗口函数?
窗口函数,也叫OLAP函数(OnlineAnallyticalProcessing,联机分析处理),可以对数据库数据进行实时分析处理。
基本语法:窗口函数over(partitionby用于分组的列名orderby用于排序的列名)。语法中的窗口函数主要由专用窗口函数(rank、denserank和rownumber等组成)与聚合函数(sum、avg、count、max和min等)作为窗口函数组成。
从窗口函数组成上看,它是groupby和orderby的功能组合,既然我们已经学了groupby和orderby,为什么还要学窗口函数呢?groupby分组汇总后改变了表的行数,一行只有一个类别,而partiitionby则不会减少原表中的行数。
恰如窗口函数的组成,它同时具有分组和排序的功能,且不减少原表的行数。
03hr窗口函数如何使用?
以截图问题为例:查看每个班级的排名情况
截图示例中使用了专有窗口函数rank,从整体执行效果来看,语句十分简洁。我们也可以理解:为什么要叫窗口函数?因为partitionby分组后的结果被称为窗口,这里的窗口不是指我们家里的门窗,而是表示范围的意思。
04hr窗口函数分类和应用
从上例,我们可以清晰看到窗口函数的厉害之处,所以会在了解窗口函数组成部分的同时通过应用的讲解来加深理解。
排序函数rank、denserank和rownumber的区别在于并列的排名表现。
rank函数:这个例子中是5位,5位,5位,8位,也就是如果有并列名次的行,会占用下一名次的位置。denserank函数:这个例子中是5位,5位,5位,6位,也就是如果有并列名次的行,不占用下一名次的位置。rownumber函数:这个例子中是5位,6位,7位,8位,也就是不考虑并列名次的情况,和Excel中的row()函数一样,依据顺序排列下去。
topN问题:在日常工作中十分常用,以查找每个学生成绩最高的2个科目为例:
截图中红色标注是为了说明掌握sql语句运行顺序的重要性,能看懂报错十分重要,有时候很容易忽略语句的运行顺序,谨记!
topN的万能模板:
selectfrom(select,rownumber()over(partitionby要分组的列名orderby要排序的列名desc)asrankingfrom表名)asawhererankingN;
如果是最小的话,只需变动orderby的排序方式即可。
汇总分析版块中的常用聚合函数相信我们已掌握,那么在窗口函数中,它们区别于专用窗口函数的一个点是括号里需带有对应的列名。
上图以2列突出显示,可以观察到sum()数值不断累加,avg()也是,由此可以说明,窗口函数中可以看到1列的数值动态变化过程。
根据上面的观察,我们可以解决业务中的累计求和问题。
累计求和问题的万能模板是:
select列1,列2,sum(列名)over(orderby用于排序的列名)as累计值的别名from表名;在开篇对比中,我有说到关联子查询,毫无疑问,接下来的问题和每一组对比相关,那么如何在每个组里比较?
通过上述2种方法,再一次验证了窗口函数的简洁高效,以后若是遇到每组比较的问题,要知道有2种解法,同时大脑中能反映出这2种语句,但执行可以选择窗口函数。
窗口函数除了能解决以上的应用外,还可以实现移动平均,或者移动求和等,以移动平均为例:
红色标注的就是移动平均的关键字,截图是包括本行再往上2行,也可以变成数字4,那么就是5行对比,重点可以观测到相邻数值之间的差异。
综上,窗口函数所包含的内容绝不仅是上面这些,随着我们在业务中的不断打磨,我们需要不断扩充自己的知识库,平时要多总结学习。
中国卡脖子的35项关键技术,如今攻破了吗?失效分析赵工半导体工程师2023040909182018年,科技日报曾推出系列文章,报道制约我国工业发展的35项卡脖子的关键技术,引起了广泛关注与讨论。如今,快5年过去了,这些技术
合资燃油车厂,溃败中国市场!早晚破产离开据乘联会数据,如下截图,截止3月31日,今年以来累计零售的乘用车为427。5万辆,同比下降13。新能源车为131。9万辆,同比增长15。这个意味着,1季度的燃油车才卖了295。6万
季后赛首轮,山东男篮负于广州,毫无斗志,这次真不怪王晗!季后赛首轮,山东男篮主场迎战广州男篮,考虑到过程一定会很艰难,但是并没有想到山东队会以如此的方式输球,输球的主要原因也并不是主教练的无能。相比于山东男篮,广州男篮在李炎哲受伤之后内
AI成电视台新宠?主播亮相惊艳观众,连变脸都不在话下电视台也搭上AI热潮,印度一家电视台最近重金礼聘一位美女主播,不过这位美女主播可是不折不扣的虚拟主播,不少人担心真人主播的饭碗会不会被虚拟主播给抢走。这名AI虚拟主播取名为萨娜,是
邱淑贞大女儿惊艳亮相,穿米白超低胸礼服裙露一半,22岁又纯又欲有句话叫青出于蓝而胜于蓝,这句话用在邱淑贞大女儿沈月身上,真是恰如其分。3月23号,沈月参加了一个时尚晚宴,一袭米白色露肩超低胸晚礼服惊艳亮相,让网友们忍不住惊叹简直太美了!只见沈
山东队溃败!郭士强完胜王晗,广州拿到赛点,陶汉林恼羞成怒北京时间4月9日,山东队迎来季后赛首秀,主场迎战广州龙狮,经历四节苦战最终山东主场7693不敌广州,广州队也拿到季后赛12进8的赛点。两队常规赛交手山东全胜,关键就赢在内线与篮板球
盲目用祛斑产品对皮肤的伤害大有学问对于女人来说,对于自己的脸部保养可以说是最为重要的。爱美之心人皆有之,现在就连4岁小孩都知道如何去比较美丑。五姐的孙女今年4岁,这孩子眼睛大,睫毛长,皮肤白嫩,说话最可爱。
皮肤不花钱都可以变白的方法。医生都说好,不花钱就可以祛斑的方法医生都说好,这条视频发出去之后可能会得罪很多的商家。但是所有的长斑的女生们,你们必须要知道这个方法。最好先转发保存起来,留
穿衣技巧分享女生进来看字,男生进来看图什么是穿衣高手?无论是时装设计师还是名人,他们会穿衣服的原因只有一个创造了自己的风格。衣服要与你的年龄身份地位一块成长,什么阶段穿什么样的衣服真的非常有讲究。买衣服的时候尽量要选和
吊带里面怎么穿,最好用的胸贴抹胸全给你总结在这了,速看大解放胸贴10年。你确实它这是胸贴,它不是胶水。作为一个一字肩吊带大户,小v领的s忠粉。关于里面怎么穿胸贴,不管你是想大胸显小胸显丰满。今天这一期都能满足你独家私藏款。1。提拉胸贴
谁说粉色系只能是年轻女生专属,8套粉色调搭配,温柔又高级头条创作挑战赛春夏之际就是要穿暖色系,很多熟龄女性看到粉色会直觉避开,生怕自己穿衣装嫩,今天就来为大家分享8套关于粉色调的搭配,让我们一起既年轻又得体,还能温柔高级的穿衣。我的首选