00:00
好,那我们继续往下看看第二题。第二题就很有意思。第二题不涉及到两张表,一张表就做。他说查询。这张表没问题吧,啊,这就是流水表是是然后条件为什么呢?用户在2017年,这是一个V过滤条件,对吧?啊这个就V过滤条件,你用data或者说some病那过滤都可以吧,啊这个都可以好说连续三天或以上的天数里,每天减少碳排放量都超过100个。这就三个条件,然后之后呢,他说呃,需要查询返回,满足以上条件的优就进入流水,就是说你把连续三天的这个东西求好之后,然后把这个流水还要求一下,就最后做一个关联是吧?啊最后一步其实就比较简单了啊,最后比较简单了,好那我们再看一下。他说数据集大概是这种样子。
01:02
你要注意的关键点在这儿。他说连续三天每天超过100克,但是他不是说的每一条流水超过100克了。因为一天里边这个人可以产生什么多次,那你想想看,你早上打开之后,你点点点点。你点了一堆对吧啊,每天捡了一堆吧,啊,走了多少路,说购买什么东西对吧?啊,买了一张火车票好几百。好,那这个东西呢,首先第一步我们来想一下,这个当中有几个条件,三个条件吧,第一个是2017年是不是会很好写了,第二个连续三天,第三个是每天都超过100。哪个需求啊,连续三天吧,那我们是不是可以把连续三天放在最后。这两个东西好做吗?这这两个东西好做了,就是首先连续三天,他连续三天的一个基础是什么,是2017年的数据。
02:04
每天都超过100,那没超过100个,或者说不是2017年数据,我们是不是提前给它过滤掉,然后在这个2017年数据都超过100的天数里边去把这个三天的情况给他找到了,好,那我们先把这个数据啊给他写出来啊,把数据集描述一下这个东西呢?嗯,见没第二题对吧。我在这后面写啊第二题。二。好第二题冒号好第一步。过滤出。过来说什么东西,2017年。且。单日排放量低碳量对吧,低碳量。超过。100克啊,超过100克,至于这个100克超过呃,配一点大于等于大于啊,这个都无所谓了,对吧,这个就是去讨论啊,到底是要不要这个100包不包含的问题,对吧?这个是小细节问题了,你要去跟项目经理讨论的这个100到底要不要啊,到底要不要,那这块呢,我们就要一下OK吧,啊就是我们定一下就要一下,那要的话就多一个等于,不要的话就不要一个等于,对吧,就这个是小细节啊好,我们写一下C。
03:21
有的ID要吧用户,但是好,然后。德尔塔DT要不要要不好,第三个是不是some这个。Longcom求总和,现在求的之前上一步第一个问题当中,我们求的总和是针对于这个人总体求的一个总和了,现在是这个人这个单日,所以go bed里面是不是应该两个字呢?没问题吧?好,那我们写一下这个呢,是song下划线叫look,还取这个名字。其他东西还要吗?不用了吧,啊,我们只要这个。
04:00
好,然后继续。Four。叫low carbon这张表啊,叫user卡,这个low是一个字段。有走了他,然后是不是不要条件。什么东西?叫贝塔DT。应该是要2017年,应该是一到四对吧,一到四一到四我等于什么2017好,这个是第一个条件吧,第二个还有一个。是不是先写对吧?And,有同学提到and。你按的能这个吗。你是不是应该里边啊。N的不行啊,这个求的是聚合函数啊,对吧,你要放在heavy里边吧,好,这个要注意一下,好go by,刚才我们说的两个字段吧,U的ID加上贝塔BT,然后这个地方要写heavy密啊,这个什么some大于等于对百啊,按照我们之前所说的大于等于100,那我们把它干什么?叫第一表来跑一下。
05:23
一七年的这里边啊,过滤出来了什么,这个里面我因为我们取了一对吧,你看一下最小的就是什么100吧,啊最小的100就100个我们要。100的,我们要这事。其实我们要的是连续三天都超过100的,那么此时你说这个100还有用吗?这个数据。就是这个东西,按照我们后面求连续三天的时候,这个东西有多吗。没有用。
06:00
是不是没有用了,没有用啊,等会我们就不要了啊,我想说的意思是什么呢?这个列呢,我们可以干什么?不要不要这块东西,直接把这个东西干什么。这种写过吗?一样的吧,好没问题,我跑一下啊。也就是最后一个没了吧,啊最后一列我们不要了,因为后面它不影响我们分析啊,不影响我分析好,现在数据集到了这个样子,我们接下来就要解决连续三天问题。对吧,难点来了,因为现在我们已经把一七年这个条件用上了。把每天大于100也用上了吧,啊,这个没问题了,现在解决的就是你要盯着每个列看了。日期这一列吧,而且你要注意日期这一列呢,你要对于同一个人看日期了。你说张三今天100了,明天李四500了,你说把他们俩说连续这个没意义吧,对吧?啊对于同一个人,所以呢,现在我写的数据是这样子,你要注意一下,嗯,我来举一个例子啊,数据我就不写那个用户了,默认用户是一样的,好,我写一堆数据,你告诉我这个数据要不要啊,好吧,2017啊,就按照它那个时间来2017,嗯,然后呢。
07:24
是这个。呃,他的数据是这样的,对吧?啊,他数据是这样的,呃,里边呢一月。二号。好,还有一个207,然后一月。三号,然后2017,然后是什么?1月4号。好,呃,还有一个立方。四六这个是八。这个是什么九。对吧,好,我们这样,我们就站在单个数据的角度来看,那你告诉我这条数据要还是不要。
08:08
你怎么判断的,对吧,先这样啊,先这样,我们看一下这六条数据,你整体看一下将来我们要给几。是不是234689不要了,对吧,那你在判断的时候是这样判断的。你看这个数据的时候,你来判断他要不要因为你做整体,你如果说做整体考虑的时候,你会发现你脑子转的太快了,你反应不过来。对吧,我们就拆开我们一条一条数据看,因为这就是你写搜索的,其实你写的so就是无非就是让人家用人家的一个语法规定好的语法,把你的想法实现而已。那这条数据我们说了,大家都说要对吧,那要的条件是什么呢。是不是它跟下面两行是什么是连续的。
09:07
对吧,那好,1月3号这条数据你要不要呢。你要你判断的根据是跟上一行以及下一行是连续的,对不对,那四行呢。是不是也要是跟上两行连续吧,那六号这条数据呢,不要原因呢,是因为它跟前两条以它为中间作为三条,以及跟后面两条这三种情况都不满足啊。也就是说,其实这条数据要不要。三种条件里边只看只满足其一是不是就够了,那只满足其一是不是将来我们用or关键字连接。对吧,翻译篇思考,那我们就想了,那我怎么知道这个东西它到底。
10:00
跟上两行,跟下两行以及我作为中间。取三行怎么判断呢?对,有同学提到了,如果说它连续相减等于什么?一。或者说减前面等于一,减后面等于什么负一,那减后面第二条呢等于。负二。对不对?那问题来了,我怎么能把这条数据跟前面两条或者说跟后面两条相减呢?用那和力的函数,把什么前两条以及后两条数据放在我当前啊,对不对。对吧,如果说假如说这条数据你已经拿到了,结果是这样的,因为前两条没有数据,没有数据,我们之前说了,前面数据我们统一用什么19700101嘛,对吧,假如说后面数据我们都用什么什么9999-9999对吧?啊用这个数据好,这个是前两条,前一条是不是也是它。
11:08
好,后一条呢。后两条呢,是不是这个数据,同样的道理,我对它进行一个操作,前两条是不是这个。往前推第二条前面第二条。对吧,好,第一条呢。二对吧,好,继续。这个呢,往后一条是不是往后两条呢。好,下面呢,我就不写了。我就不写了,好,这一堆数据集我们放出来之后,接下来你说第二应该做什么事?是不是这样,我们把它减它,同时减它,然后再减它,再减它。得出来四个列叫A。BC。
12:02
D假如说我们相减的力就叫abcd,那最后相减的结果,什么样的数据就是我们要的数据?三种情况满足其一,是不是那三种情况?我们先写一下哪三种情况。A等于负二是不是一种情况,且同时B等于负一,这种情况是我们说的跟什么东西连续的?跟前两条连续的对不对。没问题了,因为相减吗?哎,不对啊,这个是我以他减的话,这个应该是什么,这个是正啊,被你们不懂,你们说负二负一啊,这个应该是正二的啊,这是一种情况,然后接下来第二种,我这条数据作为中间值是要看哪哪个。BC是不是,哎,如果B等于什么一,同时C等于什么负一的时候,这个数据是不是当刚好这条数据在中间跟且后两条需要对吧,同时还有最后一个,那就简单了,C等于什么负一,且这个。
13:22
D等于什么?是不是这种情况?注意这是三组情况,先买so的时候,这种东西怎么用or给它连接起来?我直接在这写吗?不行吧,得用什么加一个括号对吧?哦,然后再写什么哦,然后同样的这是一组条件吧,啊,它是多组条件啊,你得这样去写。啊,你得这样去写中间用什么哦,因为我们当时带着大家分析的时候,你在看某一条数据要不要的时候,是不是你在思考的时候,思考的这三种情况。
14:00
只不过说你脑子转的比较快,你没有反应出来,你你经过了这么多的一个思考。对吧,啊,因为你比较聪明嘛,所以说你一次性就直接给出来答案了啊,你就忽略了你的思考过程,你想一下,其实你大脑里面是不是经过这个思考过程。没有啊,还是太快了,自己没有意识到是吧?啊,其实就是这样一个过程,那其实就是把我脑子里面,把我们脑子里面的想法要写搜索给他写出来。啊,给它写出来好,那这个思路我们分析完了哈,那我们写一下,因为思路分析完了,既然简单了,我把它,我把那个什么这个分析思路呢,我也放在这,我但是呢,我也给他干掉。看到X我放到最后可以吧,因为我中间都写的是具体的思路,都是连贯的啊,都连贯的好,接下来我们来写一下。那有一个问题啊,就是最后呢,这个日期要相减对吧。格式化了啊,那我们格式化一下,呃,这款直接干什么?对啊,直接可以在这化。
15:02
还有一个什么。括号这个地方我们应该格式化成YYYY杠,MM杠,DD年月日吧,啊要到天这个前面是不是应该要把那个斜杠变成横杠啊,啊这个是我们所说的啊好,这个地方呢,还写一下叫re g X下划线,这是这对吧。CECD。括号,把它整体括起来吧,括起来再加两个什么参数。这个是斜杠,这个是什么中杠对吧,我们把它跑一下啊,以防万一,我们假如说写错了呢,对吧。来吧,哎,数据变成我们要的样子啊,这个没有问题,好,那我们继续。第二步我们简要注释啊,第一步呢,过滤数据集对吧,第二步就是将。前两行数据以及后两行数据。
16:03
的什么东西,日期吧,我们是不是只要放日期对了,日期放置当前行。啊,画成,那我们写下select。UD啊,要这个呢是呃,这个呢,我们取个名字叫什么。叫德尔塔TT,我还叫德尔塔DT啊,取别名其实可以跟他取一样的。在BT,好,呃,这个东西放在这,然后接下来是我们说的前两行跟后两行,前两行用的是。前面是那个对吧,那个好,这个地方是得塔DT对吧,塔DT啊先写一个二。A吧啊二好,然后是不是可能会那啊那一减不就出问题了,对吧,所以给他一个我们当时说了给他一个什么19701杠什么零幺杠零幺,注意格式跟这个格式保持一致吧,应该相减,那over。
17:04
Partition by,注意一定要对于同一个人嘛,对吧?同学part by什么?同时按照order by谁啊?D,这个需要什么D吗?啊,不要这个不要啊,就时间就从先后顺序嘛,对吧,这个不用D啊,这个呢,取个名字叫like to。OK了啊,这就前两行嘛,同样的好,我是不是可以把它干什么?这。好啊,那这个地方改成一,这个地方改成一,好这个就不能用那了,应该用lead对吧?Lead我把一还是写在前面可以吧?啊一写在前面,那作为lead,其实你写这个也行。因为一减它的数据也很大,我们要的都是什么零什么一负一等这些数据吧,啊所以呢,你写1970也可以啊,我们就1970不改了,那这个我改一下,改成叫L1A类的二对吧?嗯,啊这个对一啊一好,这个也改成什么。
18:12
Lead啊,这个地方的21970,这个没什么问题,然后这个改成利的啊对吧,立的啊啊就取个别名这样做区分,最后这个逗号给它干掉吧,给它干掉好,那然后from也要给。一。是不是就够了,这里面有什么公办吗?没有吧,我们简单的就是把这个数据做一个什么规整,对吧?啊,作为分整好,我们把它干什么,呃,跑一跑啊,把它跑一跑。来,这个东西给他拿过来。放到这个里面。哎,合起来了。啊,走。
19:02
好,那现在来看一下关于U1这个人是不是按照日期排序的。U1这个人只有两条数据了,所以U1将来肯定不会出现在我们结果集里边。对吧,啊,绝对不会出现,因为它就两条数据啊,只有两条,你不可能连续三天了嘛,对吧,然后你看前两条。19701970没问题了,因为它第一条前面没有数据啊,后面有数据了,但是再往后呢,又没了啊,再往后就没了,所以呢,这个数据啊是OK的,好,然后接下来我们应该做什么事,第三步。叫计算当前日期。跟前两行前后对,当前是七跟。前后对,直接是前后,前后两行。时间的什么差值?
20:00
对吧,啊,先做差值,那select啊,这个就简单了啊,User ID。U好,然后前两行的差值用什么函数啊它。两个时间相减对吧?啊得塔内用贝塔BT减去谁呀。来个二对吧,那这个叫来二_D啊,随便取个别名啊,那我们把这个是不是统一的再复制三份呢?啊,然后改一改吧,然后改一改,那都是拿它减前面就不用动对吧,这个改成那个一,这个是内的一对吧。力的D,好,这个就是力的。二好,然后呢,把它一下,它改一下,好考RC把它改一下。好力二诶把它也改一下,最后这个逗号不要吧,啊,最后一个逗号指标了啊,然后接下来是装这个什么。
21:03
哎,这个地方呢,我们再保留一个电塔BT。From这个T2表吧。啊。这样好,然后我们把这个再干什么。跑一把对吧,啊放在这个后面。放在这个后面,把T2前面加一个。括号这个是不是T2啊,对吧?啊,这个是T啊,这个转过来吧,你看这个搜狗就会越来越复杂对吧。来到这了,跑一跑啊,就把这个时间日期变成了什么012这些数字来看这。这个解出来这种肯定不是我们要的吧,所以说了你最后那个1970,你你想改9999或者不想改都行吧,反正这个数据肯定会过滤掉,对吧?啊过滤掉按照我们所说的这有四个,就是我们刚才所说的AB,什么CD是不是啊abcd好,那最后就简单了啊最后就简单了来到这一步,诶不是这是这对吧,第四步。
22:07
过滤。中。连续三天超过。100克的用户对吧?啊用户这个就简单,我们写一下select克好user ID,然后是贝塔DT对吧,给它保留着好,这下这些东还需要不需要了,这个是用作过滤条件的吗?等会这个问题我们会把这个写完,OK吧,然后这块怎么写from?T3了吧,这个表示T3了三从T3表然后是什么好为我们要好好写一下,是不是一个括号一个哦对吧,我们说了,然后再一个括号再一个哦对吧?啊然后再一个什么括号,括号结束好哦来写一下呃,那个。
23:08
二_D。等于多少二对吧,且这个那个。EDF等于一没问题吧?好,那第二个条件是不是,那EDF等于什么?一且力的一地方等于负一,我们要吧,啊,最后是力的1D等于什么负一,并且力的2D等于什么负二。啊,这个条件呢,比较复杂一点,那我们给他看。啊,这样呢,就好看一点啊。对吧,啊,这样来做一下,这样来做下,他这个就是我们要的数据集,那我们把它干什么跑一把,对吧?啊,还是放在这个后面。
24:02
后面这个是三表吧,在T3前面加一个。括号,然后把这个内容。给他。拿过来吧,看谁啊,放在这个里,然后把这个放下吧。好。那其实这个结果当中,刚才那个同学的问题已经回答了。2345,刚才同学的问题说这种取不出来超过三天的。那怎么会取不出来超过三天呢?你要注意一下我的,我们的思路是盯着某一条数据,我只看这条数据叫啥。对吧,那你到这条数据的时候,难道就不满足跟前面两条板相相邻吗?对吧,所以无论你超过三天是四天五天都可以对吧?啊,而且从结果当中是不是告诉你的四天的也能拿出来呀。
25:05
对吧,啊,这个是可以的,刚才因为有人发飞车问是不是超过三天了拿不出来对吧,我刚才看了一下,我们刚才看了一下这个就是234对吧,你看一下,然后八是4567啊九呢是234,然后呢,这个是4567啊可能造的数据呢,都差不多123,这个就更多了,对吧。这个是什么?七天吧,七天连续都能拿出来啊,这个OK的,因为我们的思路不是说满足三天我们要一次,我们是怎么看的,是盯着这一条数据,我们判断时判断的条件是不是针对这一条数据,我到底要还是不要?对吧,啊,要还是不要好,其实这一题还没做完啊,啊,你们可以把它补充一下,最后一步简单的,因为他是这样说的,来看一下题目他是怎么说的呀。他要的是满足进入流水,那现在你把用户跟天拿到了,跟原表做一个关联交易,字段是UID等于U的ID and。
26:05
我们说了它不能用or关键字,但是and可以吧,And dt等于DT没问题吧。你看一下,那最后不要这个流水吗?我们当前是不是找出来连续三天的人,以及他连续三天的这个天数啊,他要流水的话,你是不是跟原表做一个交易。对吧,啊,把流水拿出来啊,把流水拿出来是这个意思啊,因为你开始是按照人按照天聚合了吧,啊,那我们写一下吧。写一下最后一步就简单了啊,其实这个完全可以自己去写一下。嗯,在哪一块啊,好这个吧,那这个就把它叫做T4表是不是啊T表好最后一步关联。原表吧,我写下叫关联表,那谁来的?我们写一下,呃,要什么东西,要流水对吧?啊,流水,呃,那张表是不是user表啊,呃,User log Co对吧?啊,那我们就叫user,点我取别名叫user对吧?啊,他要流水,流水里边有UID。
27:13
然后U的表点什么对塔DT,也就是说就是原表的三个字段都给它拿出来吧,啊,当然,呃,原始的表当中还有个流水号,你写一下,因为关联的流水号也可以拿出来吧,比较简单一点的连,然后还有一个什么,然后。这个T4对吧,然后。叫user。诶,Us user这张表,然后我们取别名叫user对吧,因为我上面用了这个user别名叫,然后教育条件呢。其四。
28:02
点user ID。等于U的点U的ID对吧,这个其实可以完全自己写掉,并且是不是日期还有三啊其次点。贝塔DT等于什么U的点塔?诶啊塔地铁啊,数据的器好这个吧,啊,那我们把它干什么,复制到最后,然后再把它跑一下吧。哦,对啊,这个麻烦对是是因为这个关不上。日期对吧,把日期还得改回来。对,把这个改一下也行啊,把这改一下,那我在这改一下这个日期,因为确实啊,还没考虑到这个点,是不是这个日期我们改成了杠杠嘛,这个日期还是斜杠斜杠,那你连接连接不上嘛,一条数据都没有对吧?啊一条数据没有,那我们把它改一下也可以吧。
29:04
啊,把它改一下,那这个地方。嗯,改七是不是前面有啊,你直接复制一个过来吧。是不是他呀。来这个叫有的点这样的样呢,把他干什么下,因为最后有关联原表,关联表比较麻烦。其实重要的在于求什么。连续三天这个问题吧,啊,这个表呢,是我们要的那个T4啊,然后把它。这个就多成了呀。看着背,对吧,我都不知道从哪粘了。从这到。到这了啊,到这开啊跑一下。嗯,这个里边果然这个长了有问题啊。
30:08
他说不能够识别音的,点ID第二,第二行的六个吧。第二行这个优点对塔BT。我看一下这个地方出了什么问题啊,因为最后一步。啊,有人看出来问你了吗?不要吃饭。易条件里边教育条件如果说啊是这样,如果说教育条件里边改不了,我们可以提前给他代码。先改一步啊,就就会又又又复杂了一步,就是得对原表先进行什么。更改数据,然后再去做什么,做交易条件啊,做条件就就又复杂了一步啊,复杂了一步就是最后这一步呢,就是我们重点的关注的在于哪。
31:08
求连续三天出来,因为连续三天出来之后,最后一步就是交易了啊,就是交易了,交易的时候呢,应该是在奥里边呢,我们去修改一个时间啊有点问题,那我们这边怎么做?对原表先把时间干什么修改好,对吧,修改好之后再去关联么?啊再去关联就OK了,重重点的呢,大家要知道这种就是求连续三天的一个思路。但是大家感觉这种球连续三天的思路好吗?坏处在于哪?如果说我让你求连续十天呢?你疯了对吧,上九行下九行,这个还好一点。风在哪了?最后的那个过滤条件你要写多少种?
32:04
就是就是V里边什么什么东西等于负9AND等于负8AND等于负负七,然后一堆,然后二,然后从负八开始对吧,到这边有个一,然后这边负七开始,这边有个二。写了一堆吧,啊,也就是说我们发现这种思路啊,从连续三天马马虎虎啊,还能接受是吧?啊写一写还行,让你写十天,你该加的不想写,因为写十天的时候,你想想看,首先第一个这。前九后九了吧,18个,那这个减呢什么18个对吧,最痛苦的,因为这个还好将风水就改一改,最痛苦的是你要把这里面的条件给他清楚。对吧,啊,你要把这里的条件给他理清楚,那我们把这解下。
我来说两句