00:00
看一下这个rank。排名是吧,不是那个排位分数是吧,其实也是排位分数啊rank好,其实他这个RA这个排名当中,它有三个函数,一个是RA,一个第三次还有个row number。那这三个有什么不同点呢?看一下啊,他说排序相同时会有重复啊,总数不会变,然后第二个又说什么。排数排序相同时会重复,然后总数会减少,然后最后一个说会根据顺序计算。就就感觉不知道他在说什么,对吧,举个例子啊,大家都高中什么初中考过试对吧,考试的时候难免会出现什么情况,同分同分的情况,那同遇到同分的情况,每个班或者每个学校他一个。规则就不一样了,他有的就是两个人同分了,他就按姓名就第一名第二名是吧,直接这样排,但有的呢,就并列第一对吧,有的学校就并列第一,那并列第一又有两种情况,什么两种情况啊,就是假如说第一名啊是100分,就两个100分,他两个并列第一了,那第二名假如说99,就是接下来的分成99,这个99可能是第二名,可能是第三名吧,是吧,有这种排序,那其实刚才我们所说的那三种情况呢,就在这里边,就在这里边这个。
01:26
顺序计算就是我们所讲的,虽然你同分了,但是按姓名来做一个排序,当然你学校是按姓名排的,他have里边是按什么排的呢?这不一定,因为你表里边没有姓名怎么办啊,是吧?也就是说它肯定会是120给它分开的,哪怕你排序的字段是相同的,它会有一个一二区分,然后看啊rank,他说相同的时候会重复,也就是说它会存在并列第一的情况,但是总数不会变,那总数不会变,指的是99那个人是第几名。
02:00
第三名吧,哎,三个人他就是第三名是这个意思,然后这个总数会减少,那99分的那个人就是第二名啊第二名那我们来呃,把这个测一下啊,分别对这几个函数测一下数据来拿回来是吧。我们。这边老师跟孙悟空那个考试成绩是吧。送是吧,Y一个so.t.T啊成绩。把它粘过来,注意啊,你看这就有一个空行了吧,那这个时候我是从word里面粘出来的吧,啊,所以说你从word里面粘出来,你要看一下,你把最后一个空行给干掉,最后一个空行干掉啊,好的最出,然后接下来我们把建表语句拿一下啊,建表语句在这同时把这个导进去,把这两个语句同一块执行一下也可以啊,那这不是这个是建表语啊,然后这个是什么?导数据吧,我一并复制过来,就两个执行一下,然后这个表就比较简单,就是姓名学科加一个成绩啊加一个成绩。
03:08
走一下,走完了吧。再来个from。成绩这张表。哎,这个数据就已经导进来了,导进来了接下来呢,我们看一下这个rank,如果说我们单独的select的心,然后加一个我们单独看能不能使用这个rank函数啊。R akk,它这里边啊,它NK啊是一个括号是吧,如果我们不传它是什么样的的,From这个。看他能不能直接给我们排序,如果说这个能过的话。那后面这个值应该是什么?从上到下。过不了,过不了,他说什么,少了一个。
04:03
少了一个这个。子句吧,也就是说rank类似于这种函数啊,它后面一定要跟着一个什么窗口函数的,一定是要有窗口函数的啊,那我们就加一个。Over,那这就是全局的吧,加一个over。这个时候语法确实过了是吧,因为你一执行发现他就直接就很明显的告诉你缺少这个包词句啊,缺少词句,那这个如果执行成功,应该其实就跟我们推测的这个能执行的结果一样吧,假如是这个能执行的话,是不是就跟我们现在这个最终出来结果一样啊。但是你发现什么?大家都是一,那为什么。你根本没有什么排序规则吧,那你这个窗口你想想看啊。
05:00
Over这个窗口代表着什么?代表了整个数据吧,那每一条都是这个窗口,所以说它里面所有数据是一样的吧,它是一样大的,一样大的,哎,所以说它任何一个函数啊,一样大的时候会怎么样啊。RA。排序会重复吧,啊会重复,当然这个总数不会变,那只有一个题,它没有后面的数字是吧?没有后面的数字。啊,这是rank,那我们其实再如果再测这两个就没有什么意思了,是吧。没有什么意思了啊,那我们测一下这个这个是不一样的,因为它根据顺序计算的是吧,来把这个拿过来。把这个替换掉,不要这个走,那这个出来的不是。八九是吧,注意一个点啊,其实你说这个一样,你发现这个数据怎么样了。
06:04
没有发现这个问题吗?来这是我们那个结果数据对吧。我们把原始表的数据拿一下。这是我们C的心,直接传的吧。原始表放在这来对比看一下,发现什么问题啊?没,没有看到什么问题吗?我把这个平面英语本来是第一条变成了最后一条。就是倒过来了。这是因为麦六子在读数据的时候,想想看,它是读一条往外写一条,读一条往外写一条是吧,那你先读的先写出去了吧,写到底下了。给他解掉了,这就是相当于什么,最终哎,你不是两个成绩一样,不是有的人说最后按姓名进行了一个上下排序吗?哎,他这个就不是按姓名了,就是按读的先后顺序,先读进来的在下面。
07:13
啊,它是读数据的一个方式是这样的啊,先读进来的在下面好。来,我们看刚才这个是什么。肉难看对吧。Rank的时候是不是都是一样?12个一是吧,当你用若number的时候,它就变成什么,它就不会重复,尽管都是一样的不会重复,但是数据还是。倒过来了,看见没?看见了吗?他都倒过来了,倒来的是这样,好,接下来这个没有意思啊,我们现在的一个需求,还记得当时我们在上看到那个那个。最难的那个,他要求什么?
08:02
每个部门的。前三名工资前三高的那个是不是啊。没有印象了是吧,就就类似于这个,假如现在我们的需求啊。原数据原数据在这是吧。啊,就这一堆杂乱的数据,然后是一些人的成绩,现在让你求。每门学科前三名。学科前三名,那怎么来啊?每门学科前三名是谁?我们这啊,Select肯定要,假如说我们就打印所有信息可以吧,然后前三名起来啊,我们先不算前三名,我们先算一个整体的排名可以吧,啊就是所有人我们1234全部都要,1234啊,假如说你有十个人,我们就一二三四五六七八九十全部都要。那like的心后面跟一个什么?Rank了rank,那我们把这个分开写。
09:00
软后面他说一定要跟一个什么over over。好,那这个OPPO这不能直接一个括号放在这吧,因为直接一个括号,他每个人都是一,所有的数据都是一了。那这里面应该怎么写?你想想看,我们要求什么?每门学科前三名。是不是对学科分区,也就是他。然后他说前三名那肯定是分数,前三名嘛,那就是欧法,注意这个part最好是跟欧法distribu,所以说你这时候可以记一下什么分数吧,分数。好,那这种求出来如果有重复分数,它会怎么样?
10:00
并列并列嘛,哎,那我们把其他的也求一下,还有一个。这个。这个函数啊,它表示的是是确实也会并列。并列之后呢?会减少啊,也就是说它并列之后,它是紧跟着上一个数字的,就上一个并列的是一,它下一个还是二,但这个你上一个并列的是一,它就会变成三,是这种意思对吧?OK,把这个它的一个窗口是一样的吧,窗口是一样的,我们还差一个最后一个number了,哎,我把也能拿一下。把它搁一块对比着看一下它这个结果。那么放在这。然后它的一个窗口。还是一样的。然后来自于。这张表吧,我走一下。看这三个函数分别是什么样的,那我们能求到每门学科整体的一个排名的话,那你要求前三名。
11:06
是不是就很简单了呀?嗯。前三名这个数据就。那我们不能查的星是吧。我们改一下这个看的不清楚是吧,我们把这个改成name可以吧,我们只需要看名字。再加一个学科吧,少一个字段啊,少一个字段。要不然谁那个新的话这太长了是吧,看不清楚。少一个逗号是吧,这少一个逗号。看,转过来。这个看太明显,那能看出来12341233是吧。
12:13
好看一下,首先是我们知道他是四个人是吧,三门学科,然后你看啊,他是数学前四条数据吧。然后是英语。这中间这四条,然后主要我设计的数据当中呢,其实只有英语有重复的啊,你看这个数学这三个都是1234,看见没,那三个都是1234,看不来区别的时候说明它们各不相同啊,没有重复的是吧,没有没有存在重复的,但是你看这个。英语这一块。他有重复的吧。133。这三放在最后了是吧?三放在最后了,那我们可以干什么?因为这样你看出来什么效果。
13:02
看不出来。说一个数据少了,一个数据没少,你现在能看出来,他最后数据都少了,是不是没有看出来它中间隔一跳的这个内容吧,那你如果把这两个三放到上面去,它是不是就能看出来效果。OK。那怎么来啊,是不是这个地方加一个D还是C啊,倒叙啊,看C你把它倒去排列一下,然后你就能看出来他们之间呢,这两个数据的一个区别了,那最后一个肉number,你看啊,它无论怎么样,无论有没有重复的。它都是1234是不是啊,它都是1234,因为它就是不会跳啊,不管有没有重复它都不会跳,但是你现在能看的出来。这个rank和这个rank。它对于重复字段,他都给他一个同样的排名啊,给他一个同样的排名,接下来就是我们所看到。
14:01
哎,这个问题了来,还是看英语这一行吧,还是看英语这四条数据。你看rank。一一就干什么,二没了吧,后面直接跟着三啊,就是它这个总数是不变的,总数不变的,然后你看它这个是第三次克吧,哎,它这个总数会减少吧。就是你这个三跟最后那个四个人匹配不上,是这个组数,不是说他这个少个人啊。就是说它会虽然你有并列的,但是它下一条数据呢,还是紧跟着上一条的一个结果是这样的,就这三个差别,那你这三个都是rank排名函数啊,那你具体的场景你要用什么,那具体去用吧。啊,根据你的具体的需求去采用就OK了,其实这三个都差不多,而且这三种做法呀,在拍成绩的时候都有,都有用法不同的学校啊,应该我都见过啊,这这几种,比如说在在不同班的时候,他班级的一个排名成绩,他他就有可能这三种都经历过啊。
15:07
然后这就是排名的一个规则问题,就看你们自己,然后或者说业务需求需要怎么样的一个排名啊,然后你就根据这三个函数去选相应的一个排名函数就OK了,排名函数就OK了。
我来说两句