00:00
好,接下来我们看一下第三个需求更变态了,对,会越来越变态了。第三个学,我们看一下他要干什么事了,就上一场景当中,将每个顾客的花费按照日期进行一个累加,那也就什么意思呢?首先啊来select的新from这个business,好,这是这个数据题,他要每个顾客按照日期进行做累加,对吧?那也就是说我们先呢看一下order by name,然后呢,Order the data,我们先看一下这个数据集。啊,我们先分析一下它这个效果对吧,然后呢,来决定开窗了,那你看啊,既然要按照日期做,哪家是不是每一条数据后面。这个结果都不一样了,第一条就自己对吧,假如说他是在平台第一次购买就自己第二次购买呢,就第二次加第一次,第三次购买就123加在一起,是不是这样的一个效果啊,也就是说我们把这个数据起拿过来啊,这是排好序的啊,我们要的效果呢,就是说在这个后面加一个十,而这个后面呢,加56,而这个呢。
01:21
111对吧,111这个后面呢,就134啊到这这个是176对吧,没问题吧,啊,那到这个位置呢,二百三十八二三八吗?是那个吗?不是的,这个又是什么十。62,他是要将每个顾客的,你把不同顾客的加在一起有什么意思?对吧,啊,要做这个事情,哎,这个就有点意思了,这个是多少一百三是吧,啊就类似于点点点,我后面就不写了,没有意义了,对吧?啊,他要这样的一个效果,也就是说第一行数据。
02:11
开窗开到哪儿啊?开到自己对不对,第二行数据开窗开到哪了。前两行看啊,第一行开窗开到自己,第二行是不是开到这第三行开窗呢?开到这第四行呢,开到这第五行呢,排到这第六行数据呢。自己对吧,是这样的一个效果。首先他是不是要按照每个顾客进行分别做累加,所以part name这个能不能用,不能不能少了它对吧?然后他还要按照日期的正常顺序,所以说对这个数据我们是不是还要做排序对吧?好,那我们可以这样写一下来谁来的,然后呢,Name all the,我把这个数据明细还保留在这对吧,然后呢,最后是那个cost花费对吧,之后是不是做累加是吧?Some cost这个没问题吧,肯定要做什么了,开窗,因为这种情况。
03:15
后面是聚合,原来的数据明细还得放在这儿,你就不用想了,Goodbye肯定做不到,后面是聚合,前面是明细,Go肯定做不了,你肯定只能用开窗,对吧?所以呢,我们先把这个开窗写了。啊,然后呢,就无非就是说填里边东西from。啊,From这个business这张表。那关键的问题就是说这个over当中写什么对吧?要写的就是partition by,那这个刚才我们分析了,因为我们是要按照人这个遇到一个不同的人,是不是要从另另开一个了呀,是吧,人跟人之间要做什么要分开,所以说帕丁半name是不是不能少对吧?然后接下来啊,其实我们只需要加一个all all就好啊,我们加一个all,然我们看这个。
04:11
或者说我们还可以怎么做呢?这个上面不是有写什么东西啊,其实我们开说你看啊,就是在在帕范围内,从第行开到当前行对不对?嗯,刚才我们分析到这个数据嘛,第一行在首先啊,我们有了帕派,所以开窗范围是不是限定的,你只能在各自的范围内部去开照。对吧,然后下来第一行数据是不是开到这,第二行数据开到这,第三行是不是开到这儿,换句话说,是不是每一行数据在先定的范围内,从第一行开到当前行。对吧,所以说我们刚才那种写法,还有另外的写法,就用这里面的这种方式。哎,用这里面的这些个方式也可以啊,那第一行是不是就从起点。
05:02
到当前哈,是不是到这对吧,但是问题就是说这里边怎么写呢,对吧?啊等会呢,我们来研究一下啊好,那看一下这个效果是不是刚才我们所说的,我们刚才是不是写的这个561134吧,然后骂是不是又从头开始了。从62开始,130,刚才我们都写了,对吧?哎,它是开窗的,好,那这里面呢,还有另外一种写法啊,怎么写呢?来看啊,我们刚才所说的,你按照这个排序,这个是不是要啊,因为原始数据是乱序的嘛,所以你得排序啊,好,那我们接下来写一下,这里边呢,我们可以还有一种写法啊,怎么说呢,这里边就比较多了,对吧?这么多种写法哦,我们可以这样啊,加上这么一行数据来把这个拿回来。我刚才加的这个都这个是不是叫起点,这个叫什么,当前行行多少行对吧。
06:02
Between and,就是说从哪一行到哪一行。对吧,从起点到当前行。啊,从起点到当前行啊好,那这种也可以,那我们就想一下,哎,刚才直接用all by也可以,这种也可以,到时候你选的时候,你肯定选哪一种啊,直接用就行了,如果说这个结果出来一样的。对吧,啊,那我们就选第一种就行了,其实到这块为止,这是窗口。Over当中选择最复杂的形式了。啊,那我们先把这个结果看完,就是说有分区,有排序,也有指定窗口范围,来看一下结果是不是一样的,对吧?那什么原因呢?来我们回过头来看这啊,首先看啊,它整个的O里面的写法在这。第一个他说什么part in with one part column啊,跟着一个column,然后没有out,也没有什么窗口的指令,对吧,也就是说我们写的Rose。
07:11
Between什么and什么对吧?这个属于限定窗口,你直接写死了对吧?Rose就表示从哪一行对吧?这是第一种,我们是不是写过这种。按照人去统计它的一个所有的花费总额,对吧,那还有怎么写呢,可以这样。Part with two。两个分区测算,是不是我们也写了按照人,按照月份?但是没有all best,也没有窗口的指令,对吧,这是我们也写了,好,那再看第三个。说按照一个分区的字段,然后按照一个排序的字段,但是没有指定窗口。
08:01
对吧,这不刚才我们写的吗?以及两个分区,两个排序,没有窗口,当然这这是字段变多了而已,对吧,没有窗口以及这个。这是刚才写的,叫有分区字段,有排序字段,也有什么窗口的指令,所谓窗口的指令,就是刚才我们写的Rose between什么什么东西,And什么什么东西啊,指的是这个意思。对吧,它是这样的一个效果,好,那我们来看一下啊,就刚才我们说的这种情况和这种是不是刚才我们所写的说从第一行到当前行是不是一样的呀,那我们就看一下啊,这种点开。嗯,哎,这说明还不在这啊,那我们去找一下它的一个说明在哪块呢?我们给他去拿一下啊,在我们给大家看一下,在这个地方。嗯。这是位子对吧,然后呢,我们去找一下,哎,这里边它没有说明,我记得是有说明的,稍等一下啊。
09:09
嗯,它底下是这些东西了,应该说明就在这块啊,我们找一下这个语句,Part,这是Rose between对吧,然后我们找一个那个。哎,这个这地方。为什么刚才那个效果一样呢?而且我们说了,如果你以后遇到这种需求的时候,是不是直接写到autobi就够了,不需要后面写Rose between an,不写那么多还容易写错,对吧?啊,那看一下为什么呢?看啊,他说当一个out by被指定的。With missing window,没有这个开窗的一个什么词句,没有指令后面开窗的,那么窗口的指令默认是什么?看这个是起点按看就是说,所以刚才我们看到两个效果是什么一样的,就算你没有指定窗口大小,它实际上是什么?默认就是从开始到当电好。
10:16
啊,默认的是这样的,所以那我当然可以不写呀,你默认的就这样子的,我还写它干嘛呢?对吧?啊,但是既然你写了可能更好理解一点对吧?哎,我们指明了从最起点到什么到O点好啊好,那既然我们可以随意指定这个窗口的大小,那这个东西就好玩了,对吧?啊,我们可以接下来怎么玩呢?来这个数据不排好序了吗?我们能不能指定间隔三行相加呀,就是对第一行而言。我加什么呢?前一行跟后一行和自己。对吧,但是前面没有,没有就算了,能懂这意思吗?你前面没有了吗?你是第一行,你前面有吗?没有对吧,我就算了,那也就是说我们希望的结果,第一行是多少呀,是56,而第二行数据呢,三行相加嘛,对吧,是不是这三个都有,所以我们要的是。
11:19
幺幺,而对这行呢,是不是这三个数据相加呀,这是多少呀?要四是吧?呃,那同理,这个下面我就不写了,关键是到这一行的时候,它是多少呀。它三行理论说是这三行吧,这注意我们还是要按照人分开啊,把这麦还加下面是不是没有的呀,所以它这一行数据应该是六五,能懂这意思吗?我们现在要做这个需求啊,那我们只需要把这个地方改一下,怎么改来,我们对着这个文档对吧?呃,文档当中呢,有这样的一个东西,说往前第几行,往后几行,我们现在需求是不是往前一行往后一行啊,对吧?好,那把这个拿过来。
12:06
对对,这个地方我们改成什么?一这个对吧,And到哪了following对吧,好到following,而到哪following啊1FOLLOWING。对吧,我取前一行跟后一行,我在这个范围内做了一下,好,那我们把这个运行一下,也就是说有了这个Rose between and的这种,你开窗将会变成什么,非常灵活。对吧,就非常灵活了,你可以随意指定你要几行数据,对吧,从第一行到当前行啊,还是什么样子都可以啊都可以对吧。来看是不是我们刚才讲到的效果,我们只看这个就行了,是不是五十六幺幺幺幺二四,最后一个是65,对吧,它是把相邻的三行做一个什么做累加,那相邻的两行能不能啊,我从上一行到当天行是不是也可以啊,对吧?啊这样的好,但是有一种不行,大家想一下啊,哪种不行呢?我从这个来。
13:24
On方地的没有边界的这个东西补CD是不是往前啊,方是不是往后啊,对吧,你N是往前多少行,往后多少行,On方地的就是没有边界的,那就是起点呗,往前走没有边界,那就走到起点了,那往后走没有边界就走到终点了,对吧?好,那我们这样啊,来这个东西呢,到这儿,然后呢,我这个地方。写这个,这个指的是什么意思啊?从起点,从起点到前注意到上一行啊,到到年行的上一行,也就是说那大家觉得这个能运行吗?为什么不能运行啊,对,主要就是第一行有问题是吧?好,我们看一下啊。
14:18
我们看一下这个效果它应该是什么样,大家想的不能运行对吧,第一行,因为这样一写第一行那怎么搞的。从第一行到第一行的收一行,这个是个什么鬼东西啊,给的是个,那因为这个窗口存在吗?对于第一行而言,这不就第一行是从什么,从自己到上一行。那正常窗口往下开是吧,往上开开不了啊,开不了它就没有了啊,它是个捺对吧?啊,其实很少,其实很少用到这样的东西了,那其他的我们来也看一下对不对啊,对于第二条数据而言,是第一行开到哪啊,开到上一行是不是就是他自己,对于第二条数据开窗是不是开的是另一条。
15:13
对吧,好,对于第三条数据开窗呢,从第一行开到上一行是不是他们俩你看加起来是不是都不六。对吧,啊,它是这样的一个效果也能做,只不过说第一行这个数据你就不好处理了。对吧,所以一般的我们也不会这样去用啊,一般也不会这样去用,哎,从这个也就是说我们只要有知道了Rose加and以及可以往前数往后数,那么它的开窗将会变得非常的灵活,非常的灵活,对吧?啊,是很灵活的。好,那当然呢,还可以这样做啊,那大家想一下,我如果说这个窗口这样看它是什么效果啊来。这个如果能运行,它应该是什么效果?
16:06
这个就是说只看日期做累加,不看人了,我先按照日期整个的做一个什么。排序对吧,整个的做一个排序,然后呢,按日期做累加啊,到最后一行数据应该是661对不对。全局的算是不是一个661啊,大家还记得吧,对吧?最后一行是661,然后呢,按照日期做了一个排序,不看这个时候就不看人名了,也就是说partition by这个东西限定的是什么?开窗的最大的一个范围对吧?然后我们在里边加auTo By加什么Rose between and,是不是先在我们限定的范围内去决定当前这一行数据开窗的大小对吧?它这样的一个效果,它呢,是从上到下直接一直做累加的,看见没?第一行是不是自习对吧?第二行就是两行相加,第三行一直到最后一行,最后一行就是总的呗,总的661之前我们算过对吧?啊,Some的时候,我们之前做过一个事,Some cost,欧空。
17:15
还记得吗?对吧,包括空是不是就是说把所有数据已经开到一个窗口,对吧,是这样的一个情况啊。
我来说两句