00:00
好,然后我们接着来看第二个需求。第二个需求来。叫查看顾客的购买明细及月购买总额,或者说叫购买总额吧,我们不要不要这个月了,因为这里面有四月五月六月对吧?啊,我不要这个月了,先不考虑这个月份啊,因为考虑月份呢又多一点,现在呢,我把这个需求改一下。查询顾客的购买明细及购买总额。那这个数据集放在这儿,最终结果我们分析一下,他这个需求要的是什么样的一个结果。首先他要购买明细,是不是这个东西你原封不动的给我放在这。明细吗?然后接下来他要每个人的什么购买总额。哎,应该是一个购买总额,不先先也不按人分,也不按人分就要购买总额。也就是说这个东西加起来是不是有一个值啊。
01:04
对吧,假如说加起来我也没算啊,假如说加起来等于300。对吧,也就是说现在呢,我要这个明细后面每一个数据后面都加一个300能懂这意思,好,那这个东西应该怎么写。Select,我用心表示可以吧,其实按照正常的在生长中,你应该写name all和什么COST3个字段都要写一下,这好,这第一个,然后怎么写上。接下来呢,是不是用一个over啊over啊,别名取不取无所谓了,然后直接干什么from这个什么business。按照我们之前对这个窗口函数的理解,应该这样写吧,对吧?哎,我们来跑一跑,我们来跑一跑。
02:05
因为每一条数据他开的窗口都是全量的,所以每一条数据后面应该把所有的销售总额全部加在一块了,啊,把所有的销售额都加在一块儿了,都加在一块这意思。好,来看一下它这个结果集应该加在一块是多少呀。661。啊,加起来就是你可以自己去加一下啊,661这是一个销售总额。啊,销售总额啊,这个东西呢,大家会写了,好,我们继续再看需求。叫上序场景中我们此时呢,不是那么简单了,我们要按将cost按照日期进行累加。那这个什么意思?来,我们先写一下这个内容啊呃,我们要的这个内容我还是。
03:00
假如说日期,我直接写一个old吧。然后我还写一个最后呢,我还想了一个什么内容呢,来我先这样cost对吧,然后from这个business这张表,然后。Order。啊,现这个数据集没有问题吧,来看一下。啊,然后我们说清楚这个需求,他想表达什么意思,对吧,先呢,你首先因为它要按时期累加,是不是先要按时去排序啊,对吧,再来看啊。好,现在呢,我们的数据集是按1月1号,1月2号,1月4号,1月5号这个数顺序,这个没问题吧,好,现在他表达的意思是这样的,当1月1号这条数据我只是十。但是这个数据我要的是多少,25这个数据呢,就25加29应该是54对吧,就这样往下加的系统这个应该是100万,我要的是这个结。
04:12
啊,每条数据做累加的一个结果,那先我们不考虑那个事情,就是当前这种情况下。我们用传统的方法能做吗?好,那在这个基础上,假如说我此时在这边啊,逗号some一个cost,肯定是some cost,这没问题吧,对吧,但是直接写some cost有问题。那我们想着加一个over,但是加一个O,它后面结果应该是什么?661是不是现在我们就在over函数里边要添加参数了,来限定当前这个什么。窗口大小。
05:00
对,那怎么做呢?高,我在这里边order一个。啊,我这个就可以不要了。当然你留着也无所谓啊,先排序跟后排序的问题,那我们把这个走一下跑一下,看一下这个结果。也就是说限定这个窗口。来看一下。看是不是我们要的第一个十,第二个是25对吧,第三个什么49是49吧,加起来54是吗?啊无所谓了。十二十五,54,一百一百五是不是里加一个结果,那我们要说一下这个东西它到底是怎么做出来的是不是。对吧,那不能说我我说了加一个O函数,然后里面加一个order,这个东西你就死记硬背吧,还是根据我们之前的那个思来,首先窗口函数往这一写。假如说我不不要他。
06:02
不要他的时候是不是全局的,这个大家应该应该能理解了,对吧,因为你没有写任何东西全局的,而且是每一条数据都有一个自己的窗口啊,现在我加了他,他为什么会变成这个样子呢?来看一下。当我们第一个数据是不是十,第二个是15吧,第三个是多少。是吧,按照那个道理应该是。49嘛,49应该是24,无所谓,这个数据集我们就先放三条,假如说这个是50OK了,其实这四条数据我们来分析一下来看啊,他给第一条数据进行开窗的时候。来看你是奥特曼奥。那你想有比你小的吗?你是最小的吧,没有比你小的吧,那你这个数据就是当前的什么。就是你自己因为没有比你小的了,好对于第二条数据进行开窗,因为我们说了是不是对每一条数据都要进行开窗啊,那对第二条数据再进行开窗的时候。
07:07
有比他小的吗?有吗?是不是十比你15小,我就把那你窗口大小就什么就是这个。因为有比你小的嘛,你里面限定的是对于当前这个窗口的什么大小的一个限制,对吧?好接下来24是不是有15跟十都比你小啊,那我的窗口呢。就再搭一个吧,哎,那这样一直到最后就显示的是什么,最后一个是661吧,601是不是全量的数据啊,因为我是什么,我这个时间是最大的,我是不是能看到所有数据啊,能把所有数据加在一块。这是对窗口函数的一个限定,它对每一条数据都开了一个独立的什么?窗口。啊,都开了一个独立的窗口啊。是这个内容能不能稍微有一点理解这个内容,对吧,要把握最核心的一点啊,就是它是针对于每一条数据都开的窗口,跟公外最核心的区别就在这。
08:08
勾是不是一组一个值对吧,你这个组里面,我不管你有十个数据还是20个数据,你最终结果都是一个值。一组是不是一个值,但是我over。我是给每一条数据独立的去干嘛。开窗的只不过说如果就一个括号,所有数据,大家的窗口大小都什么?都是一样的了啊,都是一样的而已啊,如果说你直接写个括号啊,就是说这块这个里面不限定直接写个括号,那大家都一样的。啊,是这个意思。好,现在我需求变一下,变一下我要干什么事呢,这样。我要按照人统计这个人总消费金额。啊,就是要明细。同样的这个地方还是明细,这个人的明细,前面这三个东西要有,然后呢,这里边不有三个人吗?就最后数据应该分成什么三种,ABC你花费了300块钱,你花费了250,你发花费了什么。
09:11
我要这种结果。那这个窗口应该怎么看?有同学提到了,是这样的。Goodbye。那假如说我把这个内容加上啊,对吧,这样能看的更清楚一点,是不是同学是不是这样想的。加一个奥特曼,加个奥特曼啊,这个其实加不加无所谓,因为求组合不要那个顺序了,是不是有没有人是这样想的。因为我们说了这个窗口里面写的东西是什么,是限定当前这一个人的什么窗口大小吗?那勾很有道理,是不是来看一下我们跑一下啊。
10:12
错了,也就O函数里边啊,是可以分区,但是不好意思,不能用公派。你现在看一下,我们是不是要把同一个人的数据给他累加到一块,也就是说针对于只要这个名字相同,假如说这个名字出现了五次,我累加了是不是这五个数据。对吧,啊,那用go呢,这种思路是对的啊,思路对的,但是不好意思,这里面用不了,那我们可以用什么呢?之前分区可以把不同的人给他分开的,还有什么。Tribute t。对吧,我们试一下它。
11:00
其实那个里面写勾半那种思路是对的,但是语法它不支持,不这个勾半呢,不能在欧函数里面写。啊,你用这个RI来进行一个分区啊,进行一个分区,按照不同的人给它区分开啊,我们看一下这个结果啊,看一下结果。大家看一下这里边,哎,总共有四个人是吧?啊有四个人应该讲只要是杰克的他五个人。是不是出现一个结果,因为这个结果你能想到肯定是他们加起来的结果。那同样的对于他。也一样,他呢也一样。是不是也OK啊?这个分区,也就是说我当前这个窗口是按照分区规则来的吧,只要你在一个区里边,我就什么。在一块。啊,在一个区这个意思啊,你只要一样的,我把那划分划分到一个区里面。
12:01
啊,这这个好好再升级一下,我要干什么事呢,现在这样我要这样做。嗯,我要按人统计,这个还是统计总和。我要按人按时间累加。能听懂。之前我们不是做了一个总的时间累加吗?是不考虑人对不对。对吧,我们不考虑人,直接看先时间限货数据了,现在我告诉你,针对于建设这个人,你看这里面数据,1月5号,1月8号,1月1号,4月6号,2月3号是不是乱的呀,我现在要做哪家,就是1月1号他买了多少东西,然后1月2号又买了多少东西,我1月2号那个数据结果里面是1月1号加上一月一二号能的意思。那这块应该怎么写?在这个窗口里边再加一个什么不说了,用这个什么啊,说不也排序吗,而且是区内排序吗?去内排序啊来我把他。
13:11
把它走向。来看一下。第一,是不是这个人聚合在一块?然后这个时间是不是排好序。同样的这个内容看一下。是不是累加的结果?对吧,因为你这个欧函数里边第一,你是不是限定了一个分区。也就是说你这个窗口活动范围只是对于同一个人来说的吧。因为你分区嘛,你现在开窗只能在区内开窗,是不是因为你O只写O外的时候没有D区外是不是全局的可以可以活动了一个窗口,现在我加了DJ,对针对于你借的这个人,你最大可活动范围是不是到这。
14:17
对吧,也就心理死了,你只能在这个范围内进行什么活动,那么接下来具体的你这条数据。到底这个窗口开多少啊。我们之前讲的那个so半或者半都行,对吧,So半因为是正好跟D连用的啊连用的,所以呢,我们用so半半呢,是不是按照这个进行排序啊。那接下来是不是还是跟跟之前我们所讲的那个需求是一样的。全局的做累加的那个过程啊,对吧,只不过说现在你最大的那个窗口已经心理死了,因为之前你只写了奥。是按照那个时间进行排序的,对吧,那你的活动范围是不是全局的数据,现在我前面加了一个什么。
15:01
是不是加了一个区的分区,也就是说你这个窗口可活动范围是不是区内啊,你肯定是区内嘛,要不然我加分区就没有意义了,是不是。那接下来这个到ma。4月8号是不是慢了,第一次购买了对吧,所以你看前面虽然有一个176,但是我能加我不能加,我只能是62,因为我对于骂这个人来说,我可活动范围是不是在这么大呀啊,你不能跨越活动范围,当你没有写区的时候,你的活动范围是不是这么大。对吧,啊是全局的数据是这个意思啊,最核心的最重要的两个就是一个分区,一个排序,这两个东西要稍微好好的去理解一下,这个是我们所说的需求二跟需求三,然后同时呢,我们还做了一个什么事呢,扩展了一点东西。对吧,啊做累加,然后按人去做累加。啊,你要去体会一下这个过程。
我来说两句