00:00
好,那接下来我们看第二题,第二题啊,上面稍微提了一下,提示一下对吧?嗯,他问的是每个店铺访问次数。前三名的访问信息。啊,他说输出这个店铺名称,访问ID和访问次数,也就是结果,现在我们看到是不是有ABC3个店铺。结果他就要A。然后假如说五号ID4号ID什么二号ID对吧,他访问的九次七次什么六次。是不是要这样一个结果,同时不是说只要A的同时还要什么B的。那我们先不考虑前三名,你在求前三名之前,你首先得把每一个用户对每一个商店访问次数是不是要求出来。对吧。现在你不是要排序吗?求每个店铺访问次数套餐的一个访问信息,那你是不是要把每个人访问每个店铺的总次数先求出来,然后再考虑前三名的问题?
01:03
对吧,那这个总次数,注意是指的是某一个用户。访问某一个什么店铺的次数,那这个count在什么范围内进行去看呢?就是它的一个分组。是属于店铺加什么用户对不对。对吧,这个时候对于用户需要去吗。不能去重吧,因为我现在求的就是什么总次数吧,你这个人访问多次,我就是让你这个多次什么。次数,所以这个时候呢,就把它去除了,那我们先不考虑前三名,我先把每一个人的总次数给求出来啊,总次数啊,第二题啊。第二题。那总次数这个东西好求吧,Select。他要结果说这东还保留着啊,关于这个店铺这个user ID访问的什么。
02:05
总次数对吧,Count c啊看C,然后from。这个什么,然后group by group by谁。少加上这个什么UD。对不对,这没问题吧,这个呢,第一步就是第二题的第一步。计算。每个人。访问什么?每个店铺的总次数是吧,啊总次数就做这个事的。这个没问题吧,啊,因为两个维度下去求总是好把他拿下。这个时候出来的结果应该是A这个人对吧,A这个店铺被一号被一号那个客户访问了什么十次啊,然后访问了八次,访问了七次,访问了12次等等这些次数吧,现在我们要在这个次数当中找出前三名的啊,我考虑到数据量,我看一下这数据量够不够,或者说我们改一下改成。
03:06
前两年的。够了是吧,他正好只有三个了,他的数据其他的是四个是吧?啊四个啊四个的话,前三名应该够了吧?啊所有数据都够了,现在我们看一下我们要的数据应该是什么。三次的三次的,然后要一个二次的啊,这个就是因为他俩都是访问三次,至于你并列或者说不并列,这个随便了,这个就是排序规则的问题,对不对。对吧,你这个取前三名是说要332,还是说3321都要这个就是什么。你培训规则的一个问题了啊,培训规则问题这个就无所谓啊,这个就是根据业务来看,你要几个,有的有的需求呢,我不管你有没有重复的,我只要三个人。哪怕你前面十个人访问次数都是500 500是最多的,我我这十个人当中,我就要前三个人,对吧,是不是有这类似的这种需求的,我不管你有多少个人重复,我只能三个啊,这个呢,我们后话来讨论,但现在这个东西我怎么能拿出来,他是前三名的人呢?
04:13
首先第一步我们是不是应该按它进行一个排序。而且倒叙吧。倒叙了,那如果倒序排名,如果说我直接按照这个。在这个组内按照抗的倒序排序。啊,那出现的结果应该是这个样子,A3A3中间的我先不考虑啊,因为用户先反正唯一了嘛,对吧?啊反正唯一了,然后A2A1对吧,然后对于B呢,应该是B2B2B1B1对吧,然后C诶就是这个了,还是211。A1那正常的,如果数据再放在这儿,我用Li是不是只能拿出来它?对吧,也就是说不能用咪,那怎么做呢,这个事情。
05:00
是不是我们上午学了一个RA,它是不是一个排名函数对吧?好,那此时我们在排它顺序的同时给它加一列。在后面呢,给它干什么?加一倍就是我们的RA,那将来加出来就是一二,什么三四,假如说我们用roll,这个就无所谓,就是啊,假如说1234好,123最后一个只有三个数了,就是123。啊,这是我下一步要做的一个事情。那最后我要取前三笔。指标什么?只要什么只要这一列不是我们新增出来的一个RK这一列吗?Rank这一列吗?我只要RK这一列,小于等于什么三不就是我们前三名吗?你看小于等于三这条数据是不是干掉了?最后一个四干掉了吧?同样的,这里面一个四是不是也被改掉了?能不能理解,那我们先这样啊,我们先把这个写一下,第一步呢,是计算这个人的一个。
06:04
访问的总次数啊,总次数,然后呢,第二步。针对同一店铺。针对同一店铺对访问次数进行什么?进行逆序排序吧,啊,逆序排序就是倒序啊,就是从大到小的一个顺序啊排序,然后同时我们还要做的是B。计算什么rank值?对吧,给他添加或者不叫计算吗?添加什么。啊,添加这个值,也就是说第二次我们要得到的结果就是把它排断序之后,同时加上1234这些东西,那怎么写?谁那个的对吧啊那个的双我是不是还要用ID呢,留着吧,ID还得要这个地方是不是应该取个别名叫CT啊,要不然下面不好用对吧?啊下不好用好呃,结果数据当中来看一下,他说要保留什么。
07:09
访问次数,所以说这块我们这个CT还要干什么。写上对吧,啊,还要写上把CD写上,那接下来添加rank值。啊,我们用number可以吧,啊,我用number好吧,然后接下来是O,注意也就是说这个你想在什么范围内进行添加呀。对于同一个店铺。按照。访问次数倒叙嘛,所以应该是帕提升。对什么东西受。然后呢,Order by CT,然后注意还有一个D倒叙吧,啊倒叙这个呢,我们给它取名叫RK啊取名叫RK好,然后from那张表T这张表吧,啊一张表,那这个里边需要写什么公分吗?
08:04
不用法,因为我们的O里呢,其实有的这个这个作用相当于勾派法对吧,啊相当于勾,所以呢,我们把第二步给它跑一下啊,把这个粘贴一分出来啊,整这个思路,然后在这。把题啊给他拿过来。他说C,我们看一下这个结果啊,看一下这个结果。有两个任务子查询对吧,有子查询。那走完我们看一下这个结果。
09:11
我得提前说个事,让他加速一下,嗯,这来看一下现在的数据集是不是变成了我们想要的这种结果。对吧啊,你是你是四个3321啊,变成234,然后你是22111234,然后21123。啊,对,这个结果集我们要做什么事?取每一个分组里前三名,前三名共有的特点就是RK这个东西小于等于三是不是前三名对吧?用一个不要条件来查询,但是我们想了,哎,之前我们所说的分组函数。用go的时候可以用heavy同时做过滤。还有印象吗?我用heavy直接做过滤,那这个里边首先这样啊,把这个东西呢,把它取名叫T2,然后我select的什么shop就在abcct,然后from t2 where r k小于零,3OOK,能做到,能做到吧,但是我们想着,哎,我不用题,我们能用heavy吗?
10:11
对吧,这个主要就看heavy跟欧函数,它的执行在什么先后顺序对不对,如果说欧在前,Heavy在后能不能用。如果反过来呢,就不能吧,那我们看一下,哎,这个东西测一下不行了,它可正常的写就写在这吗。还那如果可以的话,这个RT什么小于等于三或者说小于四也可以了啊,我们看它能不能运行是不是就OK了,对吧?啊,如果不能运行还是返回来,我们用不了条件啊,用不养条件来走。他说什么?He。指定的时候without go by,也就是说having这个语句之前其实这边就已经提到了。
11:04
第三点,有印象吗?就是这句话。它必须要跟go联动,能懂这意思啊,这个要注意一下,那没有人想到这块,我用will。V药肯定不行啊,V肯定不行啊,这个东西肯定在V药之后,对吧?啊V肯定不行,也就是说这个其实不可以,其实这个地方如果可以的话,建议大家也用子汉语,为什么呢?假如说这个hery,假如说啊这边hery可以,那你想象一下你查出来的结果是什么样。你查出来结果是不是带了RK?有没有问题对吧。如果说刚才那个地方可以用RK小于等于四,就是还这个地方可以过,最后结果里面是不是要RK啊,但是这个是你造出来的一个列辅助你排名用的吧,对吧,还是要干掉,所以呢,我们就简单一点干啥。第三步,取。
12:01
店铺。访问前三名的什么?用户啊,前三名的用户,那这个就简单了,对吧。上了逗号,然后用。CT对吧,啊,这个东西都保留着好,只要这三个字段嘛,其他的不用。加。然后是不是有过滤条件will。不要什么东西。RK小于等于三对吧,或者直接写小于四也可以吧?啊,小于四也可以,那这个就是我们要的结果,那我们把它干什么?前面加一个括号,然后呢,把T2给它拿进来吧,把这一层整套放到这来,然后呢,我们跑一把。C啊,给他拿走啊,这样就拿到前三名啊,拿到前三名,这样就是其实这个就是我们做分组N的一个方法。
13:00
无论是商店还是我们之前所说的学科,我们要学学科前三名是不是也要大多,因为你一个礼拜太多了。对吧,你不是说把所有的学科放在一块,除一个总分,然后总分排名第一的,排名前三的,那你可以用Li米的来做吧,啊倒数一排都是厘米的,现在呢,是每一个组里边我要干什么。我要取前三个啊,要取前三个,所以呢,你对于每一个组自己呢,用一个RK增加一个字段作为它的一个排名,然后之后呢,对这个RK这个字段进行一个过滤啊进行过滤。比买circle现在大家用的那个五要简单很多,那这个就是33222121没问题吧啊,至于我这个用的是number,如果说你公司当中说这个并列第一,那都都说出来,那你是不是要考虑RK和decent rank来啊,RA和de RA了啊至于他说呃,如果说这个第一名的,假如说并列第一的已经超过三个了,那后面就不要了,那用什么?
14:05
没有没有听懂,就是假如说第一名访问的不是三次吗。假如说三次的已经十个人了。我十个人,这十个人我都要了,因为他的并列第一,在接下来第二名呢,是九九次,九次这个就不要了,那用哪个。这个需求能听懂吗?我现在假如说是这样的一个结果,就是这个。商店有十个人,十个人我就不写了,假如说要3U1到U10OK吧,嗯,他访问呢,是前面这五个人,假如说五个人都这样的,然后呢。这个啊,十个人是这样的一个访问。排名出来是这样的吗?对吧,好,我现在。假如公司当中需求是这样的,是求让你求前三名,但是你这个第一名,人家大家都是十,你说干掉谁的不合适吧,对吧,那我就都不干掉,比如说但是这个九啊,我就不,因为你已超过三个人了,那你用哪个?
15:14
用第三次还是两个都一样吗?来注意,因为都是一没问题,但是一个下面跟着二,一个下面跟着六。是密集的,这个是什么,这个是。你只要一的那不行,那因为因为对B点不好,我可能是十九八,那你只要一不好意思,九八出不来能听懂对吧,你还得写小于等于什么三。是不是你要前三名永远写的是小于等于三,有没有问题对吧,你就要考虑小于等于三,按照你的需求会不会这个数据你要不要,如果说这个九八你要的话,那就怎么做。
16:08
DIS3次导用密集的对吧,这个判断条件啊,也就是说以前三比例这个东西永远不变。对不对,你不能改,这因为一旦改这个地方你就有问题,假如说所有的人不相同呢,就是按照134排的呢,对吧,那不就完了吗?对吧,所以说这个地方一定不能动,对不对,只能动这个地方嘛,啊就是看你需要什么样的数据,也就是这三种之间的区别了啊,假如说他就要实际上要3:1啊,并列第一,并列第二,并列第三,这个无所谓啊,多少人都都行,那就用第三次了。密集的啊,可以比列第一的,可以比成第二,也可以变成第三道啊,是这意思啊。啊,这块要注意一下,就这三种啊,这三种排名啊,其实在生活当中特别的就是考试的时候这个成绩对于成绩的排名对吧?啊很容易用这个啊,总分还好一点,更多的体现在单科上面,单科这个。
17:03
成绩重复的还是挺多的吧。
我来说两句