00:01
好,接下来我们介绍一下这个窗口函数啊,窗口函数其实在搜当中它没有窗口函数,但是Oracle它它也有一定的窗口函数,但have当中它这个窗口函数就很多了啊,就很多了,那什么意思呢?就这样,你想想看,你之前做的,假如说你select some就是做的这个操作啊。Select,然后一个。TH。然后是ERP这张表,对吧,求他的一个总工资,总工资那你有没有想过,其实你这个some。他求的是什么数据啊。所有的数据对不对啊,所有的数据也就是其实对于这个上面来说,它的一个窗口大小啊,是全量数据啊,所以它没有显示的指令,它的一个具体的窗口大小。这时候用sum那个函数啊,会产生两个问题,什么问题呢?这样我做这个操作,Select select select,我假如想看一下他这里面员工名字是用什么,哪个字段。
01:14
一啊,页面往上。然后双E这个能不能查啊。查不了吧,因为我们讲的你像这种函数啊。是一个聚合函数后面如果说它没有加聚合函数的,一定要放到格倍里面是不是啊。那我就要这种需求呢,我就想在原来的数据的基础上。查出来结果上增加一个列。增加这个列的就是需要。全量数据的一个总和啊,这是一种需求,还有需求。还有什么需求?我数据在这吧,数据在这我需要干什么,每个部门。
02:03
每个部门他是不是也有什么平均工资啊,或者说总工资啊,总工资和平均工资是类似的是吧,都是一个聚合函数,他要干什么,他需要在每一条数据后面。就是你本来是group by group by一个部门DPPID,对吧,然后你求出来的一个平均工资呢,它也是部门的平均工资,这没有问题,我们之前都做过,但是我需要把这个平均工资。加到每一条数据后面。就是我需要看我我这个人。所在的部门,他这个平均工资是多少,我要跟我人直接做对比啊。我还直接跟我人这个工资做对比啊,理解我刚才所说的需求吧。就是在原来的数据基础上,我需要加一个我这个部门,然后它的一个平均工资是多少是多少,那通常呢,我们使用这个sum,这些函数都做不了吧。是不都做不了,都做不了。
03:02
因为他默认的这种啊。Sun也好。Avg也好,它默认的一个窗口大小。就是跟你要不然你没有指定勾的话,它的一个窗口大小就是全量数据吧,就是整体的,然后你指定的钩呢,那你分组,你分成了三个组。那你计算的就是各个组里面的数据吧,各个组里面的数据。那怎么能让他做到类似于这种查询?就要引入我们的这个窗口函数,我们自己来单独的指定一个窗口,而不是让整个的语句给我们来划分窗口,就是说我们要给这个函数啊。单独的指定一个窗口大小,指定一个窗口大小。而不是在整个的搜索语句里面去帮他制定。来,我们来稍微感受一下,感受一下它的一个用法。
04:02
这个是它的一个什么函数的一个解释,我们还是放在这等会我们肯定要看着,然后对比着这个来一个一个的解决我们的需求的。那我们需求是什么,同样还要有数据,有需求的我们把表啊,数据都建立一下,这就是我们的一个数据,它数据呢,上面有内or data,就是他的一个订单的一个时间啊,还有一个costs花费这清楚吧。我把这个数据拿一下,CTRLC。然后放到这吧。拿一下,因为我怕从文档里面直接粘出来的话,有时候会有点问题是吧,你我通过中间面过滤一下,保证它没有问题。然后VI一个s.TSD。诶。前面少了点东西是吧。Jack回来。这OK吗?好,保存退出,然后我们把表啊,还有数据都导进来,数据都导进来,然后建表语句拿一下啊。
05:13
建表语句就三个字段。已经建成功了是吧,然后我们把数据导进来。CTRLC走一下。那的心。双。你的这张表啊。数据已经全部有了,数据已经全部有了,然后我们把它要我们干的事情啊,哎,也拿过来,这是它的一个所有的一个需求,关于窗口函数的一个需求呢。这个需求也是逐步递进的,逐步递进的。这是函数的一个解释,这是原始数据。然后我们把需求放在这。好,那我们就是一个需求,一个需求来看吧,第一个需求。
06:06
他说,查询在2017年四月份购买过的顾客及总人数。四份。那这个应该怎么来就是正常的啊,假如说我们没有学出口函数,大家应该是怎么去做这个去求。他说你想想看,他要查什么吗?他要查顾客和总人数。顾客和总人数,那我们知道,那我们select的语句里面肯定有name对吧,这是顾客嘛,就表示顾客好,还有总人数。上上不对吧,看上肯定不对啊看啊。Song,你传什么内容呢?因为你没有后面,你在后面再加一个一再看内练,不如直接用看了,对吧,好看的一个。随便吧,我看到一看的心都一样吧,看到心。
07:04
看得清就表示多少数据啊,接下来他说在2017年四月份购买过的,那我们from。Business这张表。查询这张表。然后指定will吧,为什么呢?这个order是吧,我们还是把这个建表语句也把它拿出来。因为我们需要它里面那个字段是吧。它是根据这个内容我们建立一个表在这,然后是all the。他怎么来呢?应该是要一个什么,他说2017年四月份,你这个是20174月份多少号也有啊。Like。Substre。
08:02
那个里面有没有也有啊,哎,有三四遍也行吧,哦,第一个到第七个吧,然后如果说等于。2017,然后杠零四。哎。这个是不是你的数据啊,但是你想想看,这个查出来应该是什么。你想想看这个看。首先你想想看,你这个看板查出来是什么?来走一下,看他的一个数据好吧。哦,一个聚合函数要格。现在咱们用的是。最原始的方式是吧,少一个group,这group,因为我们这个name不在聚合函数里边,所以你肯定要加一个group by。啊,括号内。
09:00
那我们把这个走向。那你想想看,你你这个时候你想一下结果还没还没看到是吧,你想一下你这个应该求出来是什么。啊,你这个抗求出来是什么。这个不知道吗?你在name其实这个名字出现多少次吗?是吧,啊,就是这个名字出现多少次,也就是说你确实查出来购买的顾客,但是呢,你第二个需求没满足啊,他让你求总人数。你后面求的是,哎,这一个人购买了几次是不是啊,这个需求肯定求出来是这样的啊,这个一次慢呀,慢个四次正常的,我们你想想看,就是这个结果应该如果说按照需求的话,应该输出什么样内容啊。这个后面跟着一个二,那后面也跟着二了。
10:03
两个人嘛,对吧,总人数二嘛,哎,他就要这种数据,其实。这个东西我们把它摘过来啊,它说我们现在。这个数据的结果吗?这条语句的结果,那其实我们想要的应该是这样的。这个地方是二,这个地方也是二了,那这个就满足需求,第一个购买过的总人数是购买过的顾客,Jack。总人数二啊,总人数二是这样的需求。啊,那肯定要亮,那怎么来对这个基因改呢?的这个基础上。来看一下啊,这就肯定要用到我们这些函数了吧,要不然也不会在这个地方讲对吧。注意,Over。一个括号,然后它是指定分析函数工作的一个数据窗口的大小。
11:02
工作窗口的大小来,此时你没有加over的时候,你这个。他的一个窗口是什么?借一次是吧,借一条数据,然后马克四条数据。这个是Jack,这个下面都是mark的。那你想想看,这个count求的是。第一个针对于他的,那第二个呢,针对于他的,哎,他是这样,没加包的时候,没加的时候,它的数据肯定是根据这个分组走的,它一个组哎都放在这个里边了。好,那他说啊,Or可以指定分析函数的数据窗口大小。而且这个O一般是跟在这种聚合函数后面,指定这个窗口大小的吧,指定窗口大小的。而且他说这个数据窗口啊。
12:01
大小可能会随着行的变化而变化,当然现在我们的需求啊,用到这。用不到这个,那你看一下啊O指定窗口大小,那它窗口大小具体多大,应该是在这个括号里面去给他限定的吧,是不是啊给限定的,如果我不加呢。如果什么都不加,它应该是什么样的?全表啊,你要注意这个全表指的是什么意思,他是这样。你不group分成两个组吗?如果说你加了包,它这个全表是不是这样的呀。全表是这样吗?这个全表指的是这个是一组,这个是二组吧,其实它就是两条数据。其实就是两条数据,那我们来看一下这个啊,加一个OV啊,Over加了个over,就是给这个注意啊,这种O啊,它是跟在聚合函数后面,只对前面这个聚合函数生效,它不是对全表相同。
13:08
来。如果是哦,我们不应该放到这是吧,放在这个,放在这个地方来走一下。看。啊,当然你通过这一个例子啊,结果你想完全弄明白窗口函数,这是不可能的是吧?啊,后面还有很多例子慢慢的理解啊,稍微来感受一下窗口函数它是什么意思,什么意思,因为接触一个全新的概念啊,不能不可能说一下子通过一个这么简单的例子就给大家全部理解啊,后面还有很多的一个需求,一步一步的来帮助大家分析的。我们并没有限定这个工作里面没有写任何东西,也就是说这个窗口啊,它是一个全量数据,刚才我们分析了你这个窗口其实是go之后的。
14:08
他跑的一个结果呢,其实就是针对你group by结后的结果,来看一下它的一个结果。是不是?分成了两个组嘛,借给一个组mark一个组吧,所以这个O最终窗口的大小是这两个组。结合在一块的一个大小,结合在一块的大小,所以它的一个条数呢,只有两条啊,每个人都有两条,因为无论是你对于这个数据来说,对于这个数据来说。我们讲了他这个东西啊。限定的是什么啊,这个count限定的是这个count,而针对你这个内码他不管的。他不管,所以说你会看到的结果,这两个地方是一样的。就是说这两个地方都是二。
15:03
因为两条数据它的窗口都一样嘛。你没有根据当前行来设定窗口大小吗?你这个窗口大小跟你在哪一行有关系吗?有没有关系,就是现在咱们这种情况都没有关系吧,啊没有关系的,当然它是可以有关系的,可以有关系的。就目前来说,因为我们over这个函数里边啊,任何东西都没写,没写它是跟当前好像是没有任何关系的。这是咱们首先稍微感受一下这个工作。啊,它的一个用法,首先我们知道了O这个函数啊,它要跟在一个聚合函数的后面。第二呢,它仅限对于前面那个具有函数生效,对吧,你首先理解的是这两个点,然后至于至于后面这个随着行变化而变化,我们慢慢的看后面这个需求啊,慢慢的的理解。
我来说两句