00:00
好,窗口函数这个东西呢,还有一些点我们还要去讲啊,正好我们把之前所讲的东西呢,再快速的去回顾一下,首先O呢代表了一个开窗。哦,大家现在对它是怎么理解的?它的本质是什么东西啊,我们说的开窗开窗,它开窗开它干嘛呀,取一个范围的数据集对不对,对吧,而且这个数据集怎么取。是跟over这个括号里边参数有关的啊,我们把它称为呢,叫will,叫over子句啊,Over词句是不是里边如果说我们写的东西不一样,它将来取的这个集不一样啊,这是第一个点对吧?啊取得集合,第二个就是我们要理解的这个集合,它是怎么来看的,是不是针对于每一条数据。都有一个独立方格,因为当我发现我们写的那个语法,什么帕半so半这个语法之后,然后求some这个语法都一样,但是每一行数据求出来它都不它干嘛,它都是不一样的吧,对吧?所以说这是不是能看出来它给每一条数据它的窗口是不一样的。
01:13
能听懂,来我们做个演示啊,就类似于现在我们是不是还是有这个business这张表对吧,我们当时用的是这张表吧。在这在这对吧,Select c from这个business啊bus啊,这个呢,你瞧一下啊,它这个数据现在是不是有可能有这种需求,我要按照这个人,按照时间累加他的一个购买额。能听懂,对,针对于每一个人,我要按照时间的顺序累加他的一个购买额。对吧,那我们语法怎么写。我把这个拿一下,这个是字段。啊放在这儿,因为自带呢,我们先对比一下。
02:02
也就是说对于什么骂借克这个人,我要他是1月1号的对吧,1月2号假如说1月5号购买了,他购买十块钱,二十三十,我要的结果它是十,它是什么,30它是60,是不是要这个结果对吧?啊那这个东西呢,你说你按照什么。分组。能做做不了吧,因为你没办法,因为分组函数啊,它。一组是一个值,大家都相同,现在我是每一条数据后面的值都不一样吧,所以呢,我们只能用开窗,这个就用到了开窗的一个特点,因为它是开窗呢,它是针对于每一条数据去拍的什么。啊,也就是说开的数据集啊,开的数据集,那这个东西呢,我们来写一下啊,之前我们也写过select。假如说我要全量数据吧内呢,这个东西都写一下叫all。对吧,然后cost对吧?啊,这是人数一集,然后some cost,因为你要求的是cost的总和,那一定是some啊,Op。
03:05
对吧,这个地方呢,我们要写的。拜。Name这一类对吧,然后同时注意跟连用什么东西,哎,不是all。对吧,啊,The好,然后from那个什么。这张表吧,啊,From张表。啊,那这样的情况就是我们当时举的例子,首先BY这个东西限定了当前数据集最大的可活动范围。他不会跨界名称去累加了,对吧,哎,你是借口五个,假如说我有五个借口五,这个呢,有五次购买记录,那将来。最大的窗口也就六个五了吧,啊也就到这了,不会说跨到那个什么马,那对吧,这是先电导然后搜呗,是不是对于整个数据集进行了排序。对吧,啊,对于整个数据进行排序,当第一条的时候,我是最小的。
04:04
我最小的我就自己做一个累加法,第二条数据是不是有一个比我小啊,一个比小,我就把你两个作为我的数据集,对吧?啊到最大的那一个是不是五个数据,因为我是最大的,所有人我都能看到,对吧?啊,所有的数据也就这个意思,那这样的话,我们就能把我们要的数据给他拿出来了啊这个是可以跑的啊走一下,但是还有一个点大家也能发现,在文档当中,大家发现到,诶这个地方啊,这个里边还可以这样写。还有一个。但是这就不是用的是什么。啊,这是两组,在O函数里边两组。啊,两种都可以啊,都可以。一样的样的两组,两组要注意下,两组不要混着用。能听懂就是你不要前面写旁后面写什么所的呗,也不要这样用啊两组啊扔记一组或者两组都记住,这个也不难记吧啊不难记,而且要注意的是这个是爬梯现脉跟前面我们分区表里边有一个什么。
05:13
吧,啊还是一样的,丁呢是在先表语句里边,而这个地方是在什么?查询语句里边啊,查询语句里边,那好这个跑完了,那呢,我们把它也跑一下。啊,这个也是OK的。这有两个两套语法,两套语法。等他他跑了啊,他跑了好其他的还有一些什么,呃。单独的去看日期啊,或者计算这个人的购买总额呀,或者说按照只看时间来累加总额呀,啊都是来调这两个吧,啊来调这两个,那我们接下来看一个例子,就是说我现在不想这样做,我现在想求什么呢?
06:05
我当前购买日期到这对吧,啊,因为他尽量的我要做什么事呢,我要看。当前假如说是1月1号。啊,交单日期1月1号,我要看近三次购买的,也就是说当前这条数据往前推两条,我要看这个。书记。能不能听懂,也就是说窗口将来开成这个样子。假如说我现在的原始数据集有1234566条数据,我现在要什么结果呢?我要这样的内容。对于第一条数据,因为他看不到前面,他前面没有吧,他就是自己,假如说我写一下啊,这是十,这是都中实所有的数据购买金额都是十,OK吧,都是我现在要什么东西呢?要这样的第一条数据。我要往前推两条,也就是说它的结果是什么?是对于第二条数据,我也要他前面两条加在一块,就是近三条嘛,就当前自己加上前面两条那个结果它应该是什么,20他呢,30,这下面的都是什么,都是30了,我要这样的一个结。
07:12
因为我们现在这个什么,它提身败也好,败也好,它的那个能完成这个事情吗。完成不了啊,那这个时候呢,会用到我们另外的还有划分,但是其实用的不多啊,用的不多,那我们看一下这里面呢,就有这几个东西。第一个叫卡,叫当前行。然后接下来叫proceed。叫往前多少行还有N。跟着的对吧,啊叫往后多少行。往后挪好,那现在我们不讨论它的语法怎么用。那就是这几个关键字放在这,甚至还有这个起点,就是从前面的起点,因为昂邦的什么意思。
08:02
没有边界的对吧?啊,无界的无界的,那往前无界前面几点吧,往后无界就后面的终点吧,最后一定要注意啊,窗口就是注意是先进的窗口范围内的前后对吧?好,那接下来是这个意思,所这个东西就我们现在语法还不知道怎么写对吧?那就按照我们刚才所提的需求,你说应该用哪几个东西。是不是用他呀。对吧,而且写的话应该这些二吧。对吧,好,他这个语法怎么写呢?我们来看一下啊。Select叫name好,第二个order data好,我还是把这个全量数据给写一下,Cost好,接下来还是求总和吧,那some cost这个东西是不是好一点?对吧,你还是求总和,然后这个时候是不是每一行数据大家也所记录的,每一行记录的这个数据集都不一样啊,不能用公办,只能用我们的什么O分组函数,好,那这个里面呢,要用到我们current肉,还要用到processing。
09:13
就N对吧,N好,那这个地方呢,应该怎么写呢?是这样的,首先物理写法Rose,然后是bew BT。啊,然后有个end那。肯定在中间要写一个啊叫and什么东西。角c re,对吧,Current肉。就这样来写的啊,就就Rose between end,这个是三个固定的,就是你要多少行,因为我们说了over函数是不是开窗开的是数据集啊,对吧?哎,也就是说这个O是先定的这里面内容,然后Rose多少行and这些吧,然后写一个开头,写一个结尾。
10:06
啊,写个结尾,那后面接下来应该是from什么东西的。对吧,哎,把他来跑一下,把他来跑下。哎,我们先查一下原始数据啊。因为我们并没有对他进行什么培训啊,走一下。啊,原始数据集给他拿过来。啊,我们做一个对比啊,原来数据解放过来啊。等待他走完。来看一下,它有改变我们数据顺序吗?哎,这个不好看,那这样啊,Come out加A,然后干什么。
11:00
钉在屏幕上。倒叙。倒叙了,发现没啊,这主要是那个环缓冲区,因为你没有排序。还缓冲区怎么写出来数据啊,先先是还缓冲区,从这一头开始写吧,从这一头开始写出吧,但是你没有排序对吧,正好是么?相反的,你没有排序嘛,因为没有排序大家都一样,就相当于对吧?啊正好就反了,正好就反这意思啊,正好就反了,但是你这然可以加一个顺序啊,加个顺序正好是反的啊,你看一下对比一下正好是什么。反的啊,正好反的,然后我们看一下这个数据集结果对不对啊啊数据结果来这个就不要了啊,就看一下这个数据跟大家说一下,等会我们看到一个点啊,没有排序的好接下来这个。第一个94。是不是两个相加的,然后接下来这个内容呢,294呢,三个相加的结果吧,啊,那现在变成160是不是这三个结果啊,因为12:94要小嘛,所以加标结果要小啊,每三个每三个也就是说它相当于呃,那种什么油标卡尺中间的那个。
12:16
那个那个叫什么。类似于那那天平上,那那那个东西叫什么。防防码嘛,那那个那个叫防码移动啊对油码是不是跟那个什么整个的油码很像啊,往前移吧,对吧,包裹的一个数据集啊,就是这种感觉啊,那种感觉啊啊就是这个三个不断的往下走,因为我这个拖不动。啊,能拖得动的话,可以把这个给他拖着好吧,拖着跑是这意思。好,这个呢,是我们所讲的这个点,那同样的,哎,我要求什么,当前行跟后两行。一样的吧,那就是把。哎,有一个问题在这儿,这个BETWEEN2往前啊跟car,我能不能把这两个换一个位置。
13:00
能能听懂我的意思吗?对吧,来。按道理来说,这个东西应该是什么?我是这意思,那我们当时写了一个什么什么BC还记得吗?对吧,换位当时我没错,你觉得那个换位左臂又开了一个区间啊,还忘了吗?我当时举个例子,对吧,走下。解析都什么?他他说了一个叫温。不可用对吧,你的window的一个范围不可用吧,因为错了对吧,所以呢,你不要用错了,所以呢,如果说你想求当前行跟后两行,那你要把当前话写在这后两行,这改成什么following才可以吧,你不要把following写前面这个不行,能懂我意思对吧?它是一个左边右块的区间,相当于你有一到三这个东西有值,但是你告诉我三到一这个有值吗?没值吧,啊是一样的道理,因为它这种都是一个区间,它会根据这个大于等于小于等于去比较啊去比较好,然后我们来试一下,还有一个点就是从前面到最后啊,其实这这个东西到时候大家可以完全可以自己去练一下,就on邦的。
14:35
啊,前面这个不是限定了一个边界吗?现在两个现在ing跟following呢,前面我写一个on就没有边界。没有边点,假如说我写的从前面的起点到当前行。跟什么东西很像了,直接写差不多吧,有印象吗?对吧,假如说你里边排好序了,对吧,直接写是一样的,这当天行啊,是这个意思啊,整个的一个需求呢,是这个点啊,其实这个呢,用的相对来说比较少一点,还有一个你要注意啊,不是说这个里边写的这个东西就不能写奥,还可以写奥这个,甚至我还可以写一个。
15:13
我在分区内干什么?爬梯现那。啊,这个也可以啊,因为他不冲突,这个没问题了,是看的时啊这个数据是OK的,因为已经改过来了。那这个范围就怎么说啊。只在姓名相同的内部去,每个人都有一个刚才我们所说的类似于那个有马的那种感觉吧,对吧?啊,你一个姓名就有一个有码,一个姓名有个有码啊,刚才没有写这个分区的时候,他是不是全局的去滚动码,全局的滚动,那你看一下这个。嗯,我们是往后两行的,对吧,刚才写的是往后两行的对吧,往后两行的你看这一块。
16:01
出现了几个这样的数据,你看这这是不是最后一行啊,这也是最后一行啊,每个姓名都有一个什么。最后一行,最后一行一定是等于自己吧,对吧?啊没问题啊,所以呢,你要注意下深圳这里边再加一个order by也可以啊,再按照这个时间排序,它是不冲突的啊,不冲突的这意思要注意一下啊,这是我们窗口函数的啊,这块的一个应用,但是这块呢,大家要注关注一下啊,就这几个点呢,关注一下,呃,不做重点掌握啊,因为呢,它相对来说在整个的应用当中,或者说面试跟。啊,你的生产环境用的相对来说都比较少一点啊,都比较少一点,这个要注意一下。
我来说两句