00:00
好,嗯,我们在这个窗口函数当中呢,还有一个。分组的啊,分组的,那这边说了,把有序分区中的行分发到指定数据的组中,然后各个组有编号,编号从一开始,对于每一行呢,他说这个函数返回子行所属组的编号。就读完了之后什么感觉不知道对吧,来这样我们来用一下就知道了,用一下其实有时候他官方的一个描述啊,就是这样啊,那谁那的我直接干什么呢。那啊,这一套呢,还是写上data对吧,然后呢,Cost还是原数据好,然后这个时候呢,要在外面写一个MT里面呢要有一个in的类型的值,假如说我给它分五个组,这个只是分组分组,然后呢O我就是对全量数据进行分组。
01:03
啊,因为这个O还是先定的什么。数据集对吧。也就是说你这个东西的作用范围吧,啊,这个东西的作用范围啊,然后。啊,前面函数的一个作用范围,那么呢,我们把它跑一下,大家看一下结果,大家感觉一下刚才那个说的是什么意思,对吧?啊,因为那个中文描述看着呢就很抽象,但是呢,其实这个函数呢,并不复杂啊,并不复杂。来看。我们总共有14条数据,然后我说的刚才那个函数呢,是分组用的,然后我里面存了一个五,因为将来这14条数据分成五个。而且平均分的,但是14又不能整除对吧,所以你看最后一个组只有什么两个数据,那两个五,其他的一有三个,二有什么三个,三有三个,四有三个吧,这分。
02:04
啊是分组,其实就是,而且他这也说了,他说。对于每一行,这函数返回此行所属组的编号。那我们刚才说的前三条应该是属于第一个组吧,所以呢,它返回值是什么。一。访问一啊,这个函数这样用的,那一般用什么场景呢?我们来看一下有一个这个需求。叫查询前20%时间的订单信息。因为订单信息我要按时间排个序。能听懂,假如说总共为前面一年啊,假如说一八年全年呢,有十天里边有订单数据。我不知道这十天是什么东西啊,到底是1月1号还是2月2号我不知道,但是呢,我现在要什么前10%时间啊,20%时间一个订单信息。啊,假如说你的数据是1月1号有一次订单啊,1月8号有一次订单,什么后面什么1月9号2月5号乱七八糟的什么最后一条12月什么十号对吧,总共呢,这是十条数据,那我不管你怎么样,我要填20%时间上的数据订单是不是这两条。
03:21
有没有问题,没问题吧,好,假如说总的是20条,我要的是前四条,对吧,那如果说这个东西假,假如说我们没有学刚才那个函数,当然学了刚才那个函数,这个事就好多了。对吧,如果没有选那个函数,这个是能做。是不是跟总条数有关系啊?能做吗?也能做编个号,把每条数据呢编个号,然后呢,把总数求出来,然后可以总数求关系吧,啊很麻烦,那现在我们有了这个函数之后,前20%,那这个东西怎么写。前20%也是1/5的数据吧,分五份,要第一份,但是你要注意按时间排序。
04:09
对吧,那这个语句呢,应该这样,我把它干什么?呃,直接在这里面写吧,因为按时间排序,那这块是不是应该加一个order by order data吧,按时间排序好,那此时我们知道这个数据的样子应该是从1月1号到12月10号,这后面呢,有个什么1122,什么五五,是不是这样的数据好我们要它。是不是要把它过滤出来啊,对吧?好,这个时候就涉及到我们之前所说的,我们是要对第一次查询结果进行过滤,是不是对查询结果再次进行加工。要用什么?查询,也就是说这个表我把它叫做T表啊,注意T表呢,这个东西是不是未来它自己取个名字,取个名字不好,那我们把它。取个别名over函数取别名在over这个条件之后啊,不是在这,假如说之前写的some取别名不是在这取啊。
05:05
不是在这,我来一个sum什么下划线,这个cost不是在这取,你要想取别名要在O结束之后,因为它是作为一个什么。整体是一个字段啊,所以在这取啊在这取,那我叫什么呢?叫NT相关线对吧?啊,分成五份的对吧?啊就这样取一下啊,取个别名好,对于这个东西,那接下来怎么写。我要填20%的,那就是select name啊,我还是习惯这样写啊,不,不要写那个,尽量的自己平时写的时候不要长成习惯写新啊,因为工作的时候不允许写新的啊,不允写新的,尽管这三个字段是不是我写新也可以啊,对吧啊,但是呢,不要写新啊,尽量的养成习惯,然后。怎么来这个不要了吧,因为我要详细数据啊,最后那个数据呢,不要了,因为作为固定条件。
06:01
T表对吧,然后是不是不要条件啊,为要这个什么。NT5等于一是不是啊等于一好,然后我们要整个的跑起来的时候,是不是把这个CTRLC拿过来,然后在这前面加一个括号,然后看到B加进来了,把它找一下,要前20%的一个订单啊,前20%时间的一个订单。来这样来弄一下啊,其实这个也就是特定场景,你要按照时间,按照什么东西的一个排序,求百分比啊,求百分比的时候拿百分之多少,百分之多少的时候,这个函数会方便一点啊,方便一点它的应用场景呢,相对说少一点啊,相对来说少一点啊。好是这个前百分之知道二号第一号二号四号应该没问题吧,啊这个是OK的,因为这个呢,1月1号最开始的前三个嘛,三个都一样的,然后呢,是全量的一个数据啊,给它拿出来了啊,这是我们所在这个超函数里边讲最个函数,那我们做一个总结啊,做个总结over呢。
07:05
哦,前面大概率跟了一个什么聚合函数。对吧,啊跟那个聚函数,这是O开窗,然后接下来这一堆是写在哪的。里边的,除了这个之外,我们还讲到还有partition跟。Back或者另一组是Dis跟back对吧?啊,这是两组都是写在窗口里面了吧,好,那这个这三个呢。是窗口外面的。对吧,是窗口外面的,好,那我们就想这个东西是往前第几行,往后第几行,那我能不能不加O,那不加它是不是也有当前行,是往前多少行,往后多少行啊对吧,我们来试一下。啊,那不加over那就简单了,我们直接写一个select对吧,Name我就写一个name可以了,其他的我不加了啊,然后呢,呃,这个地方应该如果说可以用的话,我直接写一个那。
08:01
那个呢,我要什么东西。第一个字段还记得是什么吗?里面是不是可以传两个或者传三个字段?对吧,因为它是一个重载的方法,因为它调的是,呃,物理上的一个方法啊,就是函数,那接下来呢,它有两个有三个两个的第一个参数传的是。列名吧,假如说我要把上一个在这,然后上一个对吧,直接这样写一下吧,别名也不取了,From之前我们是不是都加了一个什么over啊,这次不加看一下行不行对吧?啊,不加啊,因为我觉得这个东西好像你不是前一行后一行嘛,对吧,那我们做一下这个from business。他说对于这个LA这个函数来说。缺少了谁啊,Over子句啊,也就是说这种函数,既然我把它放在这个窗口函数里边,所以你不用试啊,或者你自己测一下,它一定后面要跟什么。
09:09
跟over的啊,那来立的也一样吧,啊都一样啊,这个要注意一下,就是说它分为两种啊两种第一个呢是写在里边的,第二个呢是写在前面的,而且写在前面的这种呢,我们既然放在超函数里边,它必须后面有什么好不但是跟sum或者avg啊这个不一样,这个可以不用了啊,这个后面不用啊,也就是说这个是特定的属于窗口函数的分函数。啊,这是特定的,这个要注意一下。
我来说两句