00:00
好先呢,我们把这个数据给它准备一下,好吧,我把这个CTRLC给它拿过来啊,啊还是一样的,你们粘的时候呢,也把它粘出来,看一下这个分隔符对不对。啊,要不然导进去它有问题吧,先看一下符,这个没问题啊,都是刚给他拿过来啊在这个地方。我VI一个VI visit.ok吧,啊插入。保存,保存退出。然后呢,建表语句我直接从这拿一下子,我们来看一下啊呃,因为这个里面呢,就告诉你了u ID data和这个COUNT3个字段吧,那这建表语句三个字段就杠T分工啊,刚才我们数据集就杠T啊,好把它拿过来C。摘下运行,那现在呢,我们把这个数据是不是应该导进来,对吧,这个呢,大家肯定都做好,呃,还是从这这。PWG,然后拿一下这个数据。VI visit.txt对吧,啊,然后into。
01:04
Table这个VI这张表,嗯,我不叫V,什么啊,叫action。Al action啊,导到action表select,新from这个action。走啊,数据呢,就搞定了啊,数据在这啊先表这个呢,他搞定一下,那我们看一下他要的一个内容,就是说他提供的数据是这样。然后要我们求这个内容。对吧,首先你能看到这个地方。格式不一样了吧,对吧?啊,首先第一个它是年月日,最后只要年月,而且它分割符是斜杠,它分割符是什么横杠。所以是不是用到我们那个替换分割符那个函数可以给他替换啊,然后取月份呢。有很多同学找到了那个瑞这个。是不是很多同学在用subs病啊啊,但是你要注意啊,S病那个截取出来的是。
02:04
没有零。发现了吗?对,用做骂吗?对,它风暴的不是格式化吗?我传年月日十分秒,我只去年月行不行?可以吧,啊可以也就是说,而且它这里边无论是小计还是累计都看出来是跟月份相关的吧,所以第一步咱们是不是应该把这个数据给它处理一下,对吧,那我们就把这个数据给它处理一下,我把这个三个字段给他来一下啊。我在这里写。好,我继续往后啊,这块呢,我们不要上面好字段放在这,那个表是叫action对吧?啊表明叫action啊不是这好第一步呢,是对它的一个格式化啊c select是不是所有字段我们先不动了。对吧,先保留第二个是不是要给它格格式化一下,对吧,那是不是得塔风慢了,如果说你觉得这个不行的话,你可以分成只插曲两步吧,啊,我们用一步好,第二个应该是要的是YYYY。
03:07
杠MM这个参数写项第一个是不是替换后的分隔符,因为我们当时测了贝塔这个东西,只认横杠嘛,不认斜杠啊,那是不是用IGXP下划线叫replace。Replace对括号replace几个参数。三个参数吧,啊,第二个参数是你要替换成替换哪个分割符,然后替换成什么对吧,前面就是字段嘛,就是的什么。Data。对吧,假如说这个东西呢,取别名是不是因为后面要用了,我们还取自己还叫可以吧啊,然后第三个是visit come,好from。From,我们都给它分开from action这张表了,好,写完之后这个表呢,取名叫T,先把它干什么?
04:00
跑一把看一下吧,啊好一把看一下走一下。是不是到我们要的这种格式了。对吧,啊,到我们要的格式了,好,现在这个数据集是它啊,我们就不按照刚才那个数据来做了啊结果放在这。接下来我们看一下,继续往后分析对吧?哎,我把这个结果截一下。CTRL加A啊。钉在屏幕上面。因为我们就可以不要这个原始数据集了,对吧,我们就看它来做对比。现在呢,我们把每个人。每天的数据把这个天呢变成了月份。对吧,啊,变成了月份,那你看一下这个数据集啊,来这个小G一看,应该能看出来是什么结果的累加吧。是不是同一个人,同一个月份的。总格啊,访问总次数对吧,维一的看是不是访问总次数,那这个如果说没有它啊。
05:06
好做吗?怎么做?Select。UID,然后第二列对吧,VC的塔我取别名还是取了自己啊第三列。Some。We come对吧,From体表,然后go by。I加上。月份。对不对,有没有问题。没听懂就是现在啊,假如说这个数据在这,我现在不考虑他。那这个东西怎么写啊。叫来。U zd对吧,第二个是我们要的。Visit data,因为我取别名还是他吧啊这样为了做一个区分,我取别名叫MN可以吧啊,省得大家那个取别名,要不然取混了啊,这个MN是格式化后的,OK吧啊,取一个MN啊,然后第三个是不是some什么。
06:05
看。看到OK from那个表。T表对吧?啊from t表,这个时候既然你是有字段和some,你是不是应该加一个。谁有的ID,然后有没问题。对吧,那我们把它跑一下,是不是前面加一个什么括号,把这个T表给他。拿过来吧,哎,给他拿过来放在C啊放在这,然后呢,把它一啊看一下结果走。那结果这个我就不要,可以销毁了。
07:03
好,然后呢,考上C加A,然后把它。拿不来。好在这。对比一下这个数据。是不是这个东西。搞定了。没问题吧,说一题,那最后一列我们这类还要累计,还要进来,而且大家发现累计累计的是什么东西啊。把小鸡的结果做哪家是不是按照时间做累压的?而且对按人按照时间做累加的嘛,先一月份的一个结果,然后到了二月份,把一月份二月份加在一块了啊加在一块,那我们当时想的应该是这样,那同学想的这块是按人加的,很多同学我看的是在这块直接干什么。逗号上一个。
08:00
的看到,然后后面呢,Over对吧,不按人类加吗?这是什么东西。是不是很多人是这样写的啊,还有一个凹的对吧,好的。喂,这个什么阿门。是不是有人写的?对吧,那你看这个。这个内容放在这儿。来,我们先不分析其他的,来分析这个。首先我们说了这个窗口函数。啊,不对,有很多人应该是这样写的。这个地方呢,是怎么写的,他?是不是有很多人这样写的,因为这个东西第一步我们求出来一个结果,他求出来看着是不是按照用户,按照月份进行分区,按照两个分区做代码啊,求出来这个内容,好,接下来我们按照用户按照这个。
09:07
人来做吗?好,那你分析一下,现在我的数据里边。U1。两个时间。啊,U12个时间对吧,那将来这个东西出来。几条数据?这样能不能成,先考虑这个问题,就是因为现在情况是这条去掉,大家都会做,就是到我们刚才这个结果,这个没问题吧。到这一步有问题吗?第一步是不是格式化时间就没问题吧,因为你看到结果原始数据里面什么斜杠,后来变成中告,这个你肯定会想要替换一下啊。没问题吧,好,第二步到他到这步就是到这个结果有问题吗。这个总没错吧,因为小季嘛,按照月份同一个人同一个月份的数据,那也就是说最后一个这个地方。
10:07
这个累计的结果。你是因为我看到有很多人是不是直接在第二部里边是这样写的,想看能能做这个事。但是你有没有发现,其实它这个数据的条数不一样啊。没听懂,来看一下,注意我们这两个,假如说有很多人写的是这两个窗函数,对吧,是不是有人这样写的,那那我们来分析一下这个为什么行不通啊,来看。还记得这个数据集大概是什么样子吗?我们去拿一下。是不是他呀,对吧。拿过来。好,我们分析一下为什么这个东西行不通对吧,好。我们来看一下,我们之前说过,既然你开窗,是不是对每一条数据都有一个窗口。
11:07
这没问题吧,每条数据好,那你看这个地方U1。UE。用一。对于每一条数据都有一个自己的窗口,那将来U一会出现几次?这还有一个对吧,是不是应该是四次。而且你用这样一写之后,这四次的结果应该是U01,然后2017年,什么一月份有两个结果吧,11又有一个什么幽灵一,2017年。一月有一个11。对不对啊,应该还有一个是二月份吧,两个二月份,然后同样1012017年什么。二月份这个是14对吧,同样的还有一个14。
12:03
12吗?啊不,十二十加四八加四对吧,12是不这样的一个结果是你要的内容吗?不是的啊不是的,所以我们第一步你看一下,而且刚才我们分析的在这个地方分析的一个内容看了。这个东西你都已经知道了,是对于这个结果做什么?做累加,那我先把它求出来,我再做一个什么。在外面再去写一个。Select,也就是说这个放在子查询里面。因为你发现了这个结果。这个累计的结果是不是累计的当前小计的结果呀,我们说了这个是两次。我们对这个结果是不是要你要计算。这个结果是不是要计算?你不写查询计算出不来了,而当前第二次的结果是不是对你第一次结果再做计算了,你就不要想着把它干什么写在一个查询里边了,我们就说过,你对于某一个结果还要再进行加工的时候,你要干什么事啊?
13:15
子查询不要忘了子查询你不要想着就是你们写搜的时候,就想着把所有东西都写在一个省份里面,因为这个东西我相信大家都能看出来,这个结果是对这个结果的一个什么。求和。有人没看出来吗?这个没看出来不至于吧,是吧,你既然都看出来了,累计是小计的是吗?结果呢?求和了,你怎么还在想着把它写在一个词汇语句里面呢?对吧,那就跨两个so来写啊,这个东西呢,我们给它消毁掉啊,这个东西呢,也给它消毁掉,然后现在我们有的这个结果我把它干掉。把它干掉,恢复原状,是不是我们之前写的是这个语句啊,对吧,这个词个语句执行出来的结果就是。
14:03
看吧,好,对于这个数据集,我同样的把它粘到这里面来。站在这来,那对这个数据集来说,我们接下来要求的内容就是做累加吧,按照人,按照时间是不是做累加,那这个东西怎么写。有待还要吗?因为结果数据要第二个呢。MN是不是要保留对吧,MN要保留,接下来呢。小G是不是要保留小G这个,我取个名字对吧,叫下划线这个。我在看OK吧,那取个别名,因为别名后面我们才能用吗?放在这。啊,全平平放在这儿,那接下来最后一列。是不是第一个是11,第二个是23,这个又是12,这个八三。跟我们之前学过的按照时间累加的内容是不是一样的呀,而且在对于同一个人按照时间累加对不对对吧,那接下来这个地方是不是求和没问题吧。
15:10
求的是谁的和,是之前上的一个和吧,啊,然后O要开窗对吧?啊,因为你是做累加,这个累加里边是针对于同一个人,按照时间的先后顺序做累加,所以这里面应该写一个part by use ID,然后order by mi,对不对?对吧,好,那这个接下来from。上面我们取别名叫T可以吧,啊叫T,来这个写一个T。然后我们把这个跑一把,跑一把之后在七号前面加一个什么。括号,然后把这个东西给他。给他拿进来。放在这,然后把整体干什么好吧,多一个什么第几行啊这。
16:10
然后呢,来吧,走。也就是说,你看出来了一个结果是另外一个结果,求和的内容就是说你已经看出来了,这一列是它的一个。结果上再进行加工,一个结果我们都看出来了,那你要想到用什么子查询,我们之前就强调过这个点。你不要想着我再放一个A,对吧,我们之前举的例子,我举的例子应该是抗,对吧,我之前举了一个例子就是抗心。然后你在同一个查询里边还求什么。Count新的加一这个就不行了,这个就不能写在一个什么查询里边啊,查询里面,因为你是对某一个计算结果进行加工,如果说你你这个结果不是对它进行加工,而是对它进行加工,可能不能写这一法。可以吧,因为它是原始数据嘛,相当于对吧,原始计算,但是现在你是对已经要计算的一个结果再进行计算,你就要用什么。
17:07
子查询,你就要一定要用子查询啊,就是我发现大家对于这个子查询用的还是不是特别熟练。啊,不是特别熟练。还有一个问题就在于。大家在写这个搜索的时候,我看了几个人,有些人呢,就是下面写了group,上面呢,又假如说group by u的ID,这个里面呢,又写了一个什么。Offer,然后这又写呗。就是不是说你学了欧函数,但凡要分组的时候就一定要用欧函数啊,不是这意思啊,前面勾这个东西还可以用啊。当我们特殊需求。像这种。这个是不是随着时间的递增,我们要累加乙往的精华,那这种勾半能搞定吗?Go能做吗?做不了啊,做不了的时候你再考一个内容,而我们刚才第二个词汇语句的时候,我们只是按照人,按照什么。
18:04
一月份把一个人的数据给他累加到一块吧,客户盖能做吗?能做吧,啊,当然你这块用over也可以,也就是说这块呢,这个语法不是这样写的吗?对吧,可以改一种啊,怎么写呢,把它看到了go by这个东西就不要了,你就一个你不要底下用go by上面又写那个什么,对吧,那你既然没用,你这个里面可以写什么over partition by,然后这个UID逗号。是MN嘛,对吧,上个阶段的MN这个也是可以的。啊,就是两个用一个,因为你这两个东西不都是为了分组吗。嗯,对吧,如果你两个同时写了,那O就不是对原始数据进行分组了,而是对什么进行分组了,对你这个分组后的结果再进行分组。我们当时举的那个例子,这个地方在这。
19:00
窗户这。还记得这个地方。第一个查询这。我们是不是。当时应该我记得是Jack是。四个名字对吧,然后还有一个mark,一个是不是总有五条数据啊。对吧,那你看总共五条数据,当如果说我没有写这个的时候。它出来的是什么东西啊。四个这个一个骂,而且这个后面都是。对不对,好,那接下来这个地方呢,如果我加了勾半内,那也就是说勾BY之后JACK4跟MARK1都只有一条数据了,一个名字只有一条了吧,因为驱重了,那go by是不是可以做驱重了,驱重了,而且此时我OVER1写最后出现的二还有一条最后的结果。有印象吗?它是对于你分组之后再进行吧,重新开放啊,也就是说大家写的时候要注意这两个地方呢,假如说你写勾半,这就可以不写。
20:09
好可以不写了,或者你这写了就可以不写什么。格数派了啊用一个,因为他们俩都是进行什么分组的啊,不要混着用,但是有时候特殊情况像类似于这种。类似于刚才我们看到这种情况。对吧,因为我们求的维度不一样,Go by name呢,这块是不是做的是一个去除。Distribute by就报错,那是因为你是不是distribute by跟。Allb用了。加说我说了上说了两个是两套啊,这块跟说跟那个都可以,但是如果你后面你加的是什么,这个就报错你你看下刚才那个问同学问是不是加了那个东西,我上强调两个不要混着用啊,不要混着用你用后用说你用后用什么,不要混着混着用告诉单独的,如果说只用一个没问题的啊,你看一下刚才问问题的这个同学好吧,啊这个所以说呢,一定要学会用这个我们所强调的这个子查询这种方式啊。
21:17
自查选,你一定要看出来他们结果之间是什么关系。
我来说两句