00:00
好,接着呀,咱们这个趁热打铁,咱们看一看这个第二个心得性叫做公用表表达式,它呢也叫做通用表表达式,注意通用表表达式别叫成通用表达式了啊,就显得有点被人笑话了啊,这个都是音译,都是这个翻译过来的,对应的英文呢叫做cte。啊C不是这个CE啊。啊,C是这个考试是吧?CE啊,这个叫common table expression啊common table expression公用的表的表达式啊就这个意思,它呢是一个临时的这个结果集啊,作用范围呢是当前语句,它呢可以理解成是一个可以复用的一个子查询,当然跟子查询呢是有区别的,因为它可以被其他的CP呢可访问,也可以被其他的查询呢可访问啊就这个道理啊,那这块呢,怎么去理解呢?前面呢,咱们大概提这个新得性的时候,我给大家稍微提过这个事儿啊,你比如说我们这是一个查询,里边我写了个子查询,那我现在呢,又写了一个查询语句里边,我这里边这个子查询呢,跟上边这个子查询是一样的,那我问大家了,咱们能够用这个,哎,你把上面这个子查询,内部的这个内查询借过来用一用嘛,是不是显然不可能啊,你必须得重新的再去写一份才行是吧?哎,那这是呢,就相当于是我们以前的这种写法,那么对比的话呢,大家可以把它想象成是咱们讲变量里边的什么呀,叫做局部变量吧。
01:20
类似于这个局部变量对吧,比如说你这呢,是一个存储过程或者一个存储函数里边定义的局部变量的有效范围,是不是也只是在你这个存储过程存储函数里啊,你要是另外一个存储过程当中呢?哎,定义了一个同样的变量啊,类型啊,默认值啊都一样,能不能拿过来用啊,哎,不能,哎,你还得自己再去定义。啊,所以说我们说局部变量呢,就好比是我们以前的这个子查询里边的这个这查询一样,那现在呢,咱们讲的这叫呃,公用表表达式呢,哎,它类似于什么呀,类似于咱们呢,哎,是不是用户变量了,除了局部变量之外呢,还有一个呢,叫做绘画的用户变量啊。那绘画用户变量,绘画用变量呢,只要你定义完以后的话,你在当前的这个绘画这个当中,是不是都一直可以去使用。
02:04
啊,就好比是我们这里边这个公用表表达式一样,哎,所以它会有这样的这个对应关系啊,你这个一旦定义好以后,我们可以在别的这个CT当中这个或者是其他这个查询啊,乃至于说呢,删除啊,修改当中呢,去做这个使用,它是一个临时的结构集,它还不同于我们的临时表,它会更轻一些啊OK,那么这个公位表表达式呢,它可以再分成了叫普通的和这个叫递归的啊这样的两种形式,那可能递归的要更难一些了。更难写,嗯,那么这个普通的呢,对应的这个结构呢,是这样写的,它首先是一个位,然后写一个CT这个名称,然后as呢,它下边对应的通常都是一个查询结构了,然后你在后边呢,去做这个使用就行。啊做使用就行啊,这呢其实相当于我们可以用它呢,去替换一下我们前面讲的这个子查询,但前提呢,你得保证呢,你在公司当中用的是这个8.0对吧,5.7呢,就用不了了啊。好,然后下边的话呢,给大家再去举这个具体的例子啊,所以这块呢,我们来来讲讲咱们这个内容啊,嗯,这块呢,我们再来个这个井号啊,咱这相当于是这个,哎,第二块这个大的内容啊,新特性二是吧,哎叫功呃用表来表达式啊,这个我上面这个符号呢,也稍微的调一下。
03:16
这个咱们相当于是一个大一是吧。哎,这样的一个情况啊,好,这个呢,我们往下走,这个公共表表达式,然后刚才呢,我们看到呢,说它分成了这个叫两种这个呃类型啊,一个呢,叫普通的这个公共表表达式。公用表。来表达式,好,那这块呢,咱们给大家呢,还是通过这个例子呢来进行说明,哎,比如说我们以前呢,怎么去写这个事儿呢,啊,这个我还是直接就粘过来了啊这呢是一个举例,那以前呢,我们是这样写的这个代码呢,就是一个子查询啊,对于大家来讲呢,子查询这个结构呢,还是比较简单的啊,直接拿过来。说老师你这是不是给自己不许写这个代码找借口呢?哎,不是啊,这都是我写的也是是吧,哎,这就比较简单啊,看一下咱们要查什么,咱们以前给大家讲过,你既会这个叫,呃,你要是从这个需求呢,写成这个代码呢,叫汉译英是吧,你也要英译汉啊,现在我把这个中文的去掉啊,你看一下这个能不能英译汉。
04:15
我们这里边儿呢,查询的是不是叫员工的这个地盘卖力是吧。然后呢,他可能会有重复的,我们就做了个distinct啊,就去重了,哎,就是这样一些部门,然后呢,我们从这个部门表里边呢,去查询出来这个对应的这个编号呢,那个部门,然后把这部门的信息呢,打印一下,所以这个需求呢,就是查就是什么呀,查询员工表当中的,呃,这个员工所在的部门的是不是详细信息啊。啊,所在部门的详细信息啊,就是这个意思,好,那这是我们选中了做个执行,嗯,哦,这就尴尬了。咱们这个没有部门表是吧,还得提前做一个准备啊,我们需要呢,去create一个这个table啊,Department as啊,Select行啊,From一下我们at特硅谷BB下的。
05:01
啊,Departments是不是得这么找一下啊,哎,这呢,又是一个准备工作。嗯,在这标一下。呃,准备赔工作啊好,有了这个之后呢,我们再去写下边这个子查询,哎,这个我们做一个显示啊,都齐,哎这就出来了,就是这些部门呢,就是里边呢,保证它是有员工的啊嗯,这呢相当于是咱们以前的写法啊子查询实现。哎,这个十哎线啊好,那下边的话呢,我们说能不能用这个刚才说的这个位结构呢去做呢,哎是可以的啊,那我们这块呢,使用这个哎,With啊不是with了C。C来实现啊。嗯,好,哎,公共表表达式嘛,是吧?呃,那怎么去写呢?哎,我这块呢,就直接给大家去举这个例子了啊,它这个整体结构的话是长这样子,位后边起个名,然后呢来一个as as后边你就具体写这个子查询就完了啊好的,那这块我怎么做呢?我就直接来一个位,位呢起个名字啊,你可以呢叫C啊,这个其实你就要CT也行,那尽量呢,我们这块让它有点意义,比如我叫cte这个EP吧,然后as,然后as后边呢,我们就写一个具体的子查询啊,我们就比如用个小框呢,给它包起来了。
06:09
哎,这个分号你不用加了啊呃,我们这里边写什么呢,其实就是我们这个事儿。就这个事,你不是拿这个子查询呢,你被外边这个查询去使用吗?我就把这个呢,给你放成这个CPE了啊,我就CTRLC一下,哎拿过来这个可能可能性稍微差一点,咱们就给它放到这了。哎,就这样子啊好,那这呢,相当于是我们就给他就声明好了,声明好以后的话呢,我就可以呢去,诶下边来写了,我就select星from一下啊,你是不是接这个departments啊。哎,Dependent好,这块的话呢,咱们说是一个临时的结果集,其实这块呢,大家也应该把它看成就像一个表一样了,哎,所以我们这块呢,需要去做一个这个join啊,Join谁呢?是不是就join它呀,哎,粘过来,那这个位置你写个叫D这个位置,比如我们写个叫E吧,哎,那join一下底下的话呢,是不是得我们对应的这个连接条件了,那就是d.depart。
07:00
ID。哎,是不是,哎他得等一下。哎,我们E点,哎,是不是这个叫底盘耐力啊。哎,得这么着是吧,哎,这不是有底盘卖地方,哎他俩呢,做一个关联啊,是个相等的。好,那这俩呢,其实是就算是连在一起的了啊,哎,直播过我们现在执行的时候呢,呃,就是你加个空格也行,就上面是一个结构,然后像当个临时的结构集下边我们是在这个查询中去使用的啊,你也可以呢,再往后的话呢,有其他的这个查询语句呢,你要是用到这个整体的结构了,也可以用,有点类似于呢,就是相当于把原来的这个呃,这个子查询当中的这个内查询,把它呢就做成了一个可以被其他结构复用的一个结构了。啊,不再是作为你外部的一个部分出现的是吧?啊这块我特意的给画了一个行啊,但是我们要运行的话呢,你可以把它俩一起的选中去做运行啊这块呢,我们查出来这不是11个部门嘛,哎,从十呢到一百一是吧,然后这块我们再去执行,哎,你看这块还是哎我们这些部门。啊,只不过在这里边呢,它又给你多了一个列啊,多了列呢,哎,它就相当于是把我们这俩里边共同有的这个相同的字段呢,就给我们又列了一份,没关系啊,列一份就列一份啊,但是呢,比我们上边这个呢,复用性的要更好一些啊,那这个呢,我写的呢,其实就相当是一个普通的一个公共表表达式啊,大家了解一下这个就行啊。
08:16
好这就过了,然后下边呢,我们看一个叫递归的啊,这个公共表表达式递归啊,这个大家清楚吗。呃,递归呢,就是自己吊自己啊这样一个意思啊,呃,最典型的一个递归的话呢,就是像这个啊,就是汉洛塔一样啊,汉洛塔的话呢,比如我们有两个啊,然后借助中间这个呢,你把它放在这儿,哎就是始终呢,就是A就是B就是C是吧,然后呢,让后把A上面这两个呢,你放在这个C里边,你让它这个大的在下边的在上边。啊,两个呢比较简单,三个的话呢,也还能接受,那再多的话呢,可能这个有的人就搞不定了,诶我们可以把汉道塔呢,这个写成是一个,呃这个程序,那这个程序里边呢,不断的,其实际上这个过程当中会有一些反复要执行的啊,自己调就是比如我们三个你要会的话呢,四个四个你就可以把这个四个先看成是三个一个整体啊跟这一个的是不是又是一个。
09:06
哎,两个的两个场景了嘛,所以说呢,我们四个的问题的解决依赖于三个的,三个问题解决呢,依赖于二个两个的,哎两个的依赖一个一个就太简单了是吧?哎,这就是递归的一个实现啊,大家你可以去网上去搜一搜啊,这个汉洛塔的一个,诶代码实现啊,里边呢,通常是用这个递归来做的,就是自己调自己的意思啊。那我们这儿呢,啊,还有这个递归的这个公共表表达式。啊,就是不断的自己调自己,那这个结构呢,需要加一个叫这个sive是吧?啊就是递归的意思了。嗯,不用多讲啊,这个递归的话呢,就是相当于不断自己吊自己啊这样的情况,我这儿呢,举了一个案例,举了案例啊,大家呢,了解一下就行。呃,比如说这个啊,针对于我们常用的这个员工表,咱们包含叫employd lastname,是不是还有这个manager啊。就是每个员工呢,这块都涉及到他们会有这个管理者的ID,对吧,那比如说呢,A是这个B的管理者啊A啊他的这个下属呢,是一个B,那我们就说这B是A的这个下属,然后B的话呢,又是C的这个管理者,咱们先做个明确,我就把C呢看成是A的呢,叫做下下属。
10:10
诶,我把C呢,叫做A的这个下下属能理解是吧,好下边的话呢,我说诶我们尝试呢,需要去查询出来咱们这个员工表当中所有具备下下属身份的员工的信息。所有具备下下属这个身份的员工信息,比如A下边有DB下边有这个C,呃,C下边呢,还有D啊,假设这就相当于公司里边有有点类似于就四层的这个管理的一个架构一样,是吧,具备下下属身份的这个员工信息,是不是相当于这个算这个也算呀。下下数,你比如说你这个C,你属于A的下下数,D呢,属于B的下下数,B呢不算。啊,这B不算是吧,哎,就这样子,当然你把公司当中所有的这样的啊,当然你要是有这个还有这个E的话呢,是不是E也得算是吧?哎E呢,属于我们这个C的一个下下属了,就是凡是具备这个下下属身份的员工呢,都拿着啊OG沿IG呢,就管不要上边这两层啊。
11:01
那么按照我们现有的知识的话呢,咱们怎么去搞定呢。诶,你看我这块呢,放了一个,哎,咱们以前的这种实现方式啊,说啊咱们先找出来这个初代管理者啊,就是咱们所谓的公司的那个老大应该是对吧,对于咱们这个员工表来说啊,这个我往这先放一下啊。这个是咱们的这个叫。2.2啊。叫递归。哎,这个,哎公用表。公用哎表哎表达式啊好哎,那么对于我们说的这个员工表来讲啊,我这块呢去select。哎,行,From一下employees。好,走起。啊,那如果我们发现呢,有一个员工的他的manager ID呢,这个位置是no,那那他其实就相当于公司的老大了,对吧?那在咱们这个员工表里边,咱知道这个100啊,他是公司的这个老大啊,自己心里清楚就行啊好,这个相当于100这个人就放在这儿了,先找到这个初代这个管理者。
12:01
啊,放到一个临时表当中,然后呢,再找出所有以初代管理者为管理者的人,相当于我找出他的这个所有的下级,这就相当于是不是找出来的第一层,那这你要第一代的话呢,这是不是就第二代管理者,对吧?哎,又放到把这个呢,咱们放在一个临时表当中,然后呢,再接着呢,是以这一层为这个管理者的他的这个下属。哎,都有都有谁这样呢,我们是不是就找到这一层了,哎,这叫第三层,那这第三层呢,是不是就已经具备了,我们说叫下下属这个身份了,对吧?好,然后呢,把它呢,放在一个临时表中,以后呢,再去这些临时表中找哪些员工的这个管理者的ID呢,是你这个employd,是不是再去找他的这个下属啊,哎,再往下找啊,那就找到这儿了。呃,找到这以后呢,如果说这一块呢,全是空的,就是没有查到数据,那相当于公司呢,就只有三层架构,如果这块你查到数据了,这一层药,那还得是不是再往下去找。再找呢,看看还有没有,如果下一层的没有了,那就相当于公司呢,一共是四层架构,你就要这第三层和第四层,如果还有,还有的话呢,这一层也要,是不是还得再往下找,直到呢,你找到呢,是不是就彻底的是没有,就是你这一层呢,就一条记录也没查到了,诶为止是吧,你看我们不断的往下,不断的往下,直到呢,你再查不到数据呢,就终止,诶它这个是呢,实际上呢,就可以用递归是实去实现了。
13:18
啊,但是我们现在没有用递归,哎,就是按照我们这个思路呢,一步一步的往下去找啊,这个思路呢,大家应该是清楚的吧。显然呢,你看这个过程呢,我们写的还是挺复杂的是吧,好的,那么如果说我们要是用这个递归的公共表表达式的话呢,就非常的简单了啊,这个思路的话呢,就是我们先找到一个种子查询,也就是这个初代的这个管理者,就我们说的第一代啊,哎,这段儿呢,哎,它表示的是叫代次啊,初始值呢,是一表示的第一代管理者,然后呢,利用这个递归。然后咱们用这个,呃,查出以这个递归功用表达式中的这个人为管理者的这个人啊,这个代词呢,就加个一,现在我们就往下再找了一层了啊,直到呢,没有人以这个递归用表达式中的这个人呢为管理者了,我们就返回递归。
14:00
啊,就是公共递归的公共表表达式里边呢,这作为管理者谁是以这个呢?哎,为管理者的那些人我们就找到,直到你再也找不到了,我们就结束,哎,然后呢,我们再查出来,就是因为你往每往下一层的这个数呢,它就加个一了,然后最后呢,我们找出来这个数大于等于三的,就是我们想要的这个下数。哈,哎,就是从这个过程来看的话,我们都觉得呢,它会更简单一些哈,然后对应的我们这个需求,它的一个代码实现。啊,这个我就放到这儿了啊。啊,这个呢,咱们的,呃,举例。啊是什么呢?哎,就是找出哎公司的在公司中,哎公司这个员工表中是吧。Employees这个表中,呃,所有的是不是要下下属啊,这是咱们自己的这个规范的一个话啊,好,那这块呢,我就写出来了啊,至于说呢,我们不用这种方式呢,以前的这种方式去写,刚才我讲清楚了,我就不去做了啊,太绕了啊,大家自己下来可以试着去做一下。好,那这块呢,稍微有点长啊,咱们看一看,首先呢,你看我这里边就查询出来的这样几个信息啊,Employd as name和这个manage ID啊,就是我们要找出这个员工他自己ID manage ID这些都必须要,这俩字段是必须的啊,这个呢是我们又加了一个他的一个姓名啊,这个呢把它作为是第一代。
15:17
啊,这个employd呢,是100,咱们说了这个100他就是第一代啊,种子查询是吧?啊作为第一代这个领导啊好这呢我们就放到这儿,然后下边这有个叫unit all。然后呢,去做这个select,哎,做这个select查询,然后呢,这时候我们,呃这一块呢,A在哪呢。哎,在这儿呢是吧。嗯,From as AA。哎,这是这个啊,我们整个呢,从,哎就是从这儿到到这儿啊,这as呢,是不是整个我们这块的一个结构。啊,这是整个它的个结构啊,最后我们要查的是这个需求啊,哎这块呢是我们这个递归的一个公共表表达式啊,然后呢起select a啊这是找A的这个employd does name和manager ID啊这个呢是上面那个相当于是一了,这个呢每次去迭代的时候加个1FROM employees,然后把这employees呢我们就作为这个A,然后他去join一下,这是我们就正常员工表了啊照一下我们上面这个哎,CT。
16:15
就我没CP啊,啊这个呢是作为第一代的,然后呢,看一下谁,你这个找到这个第一代的这个100这个人,他的employd呢,不是100嘛,然后呢,其他这个员工表当中,谁是以他这个100为管理者的,哎找到找到以后的话呢,他其实又作为了我们第二代啊,充当你这个管理的人,然后呢,诶,他就又相当于是你找到的那个了,又会放到这儿,然后再看别人呢,谁是以他为刚才找到那个为管理者,管理者的下一代员工啊我自己说呢,都感觉有点绕啊,就是在这里边呢,它存在这个是递归的一个实现。啊,直到呢,我们再也查不到了,那相当于已经到头了,那我们最终呢,是需要查出来呢,就是就是你每每增加一袋的话呢,这个N呢,就会加个一,一开始的值是一嘛,我们最后找的就是N大于等于三,就是有这个下下属的这种身份的人是吧?啊就这样啊,我们选择执行一下。
17:07
呃,一共呢是92条记录啊,相当于公司呢有92个人,他是这个叫下下属啊,就是这个100是第一代管理者,下边呢,可能会有几个啊,这第二代管理者,然后再往下的话呢,注意这个92的话呢,不是说第三层啊,因为有可能是不是还有第四层啊,是都加一起有92个人啊,如果我们这个位置,比如说改成是四的话。哎,我们再走。啊,这个就变成十条了,哎,改个五呢。看一下五。啊,没有了,好,那这块呢,相当于我们能够证明就这公司呢,它一共是算有几层啊。这个是十行数据啊,哎,你看这是第一代人,就是100这个人啊,然后这呢是这个第二代这个管理者,这个呢是这个第三代管理者,哎这块呢,是这个第四代的这个啊这就不叫管理者了啊,因为第五代没有人了嘛,啊那相当于这块的话呢,我们是查出来十条记录,呃,然后这块呢,诶刚才我们是90几。
18:00
哎,90多是吧,90多万减去这个十呢,是不是就这个数啊,它俩加一起就是那90多啊,那相当于公司的话呢,一共呢,是不是就这样的几层架构啊。哎,就这个意思啊,哎,我们要查的其实就是第三层和第四层的啊,因为没有这个第五层的嘛,啊啊这块我们选中刚才是啊92啊,相当于我们这个第三层的话呢,就92减去刚才那个十是吧,这个啊。好,那这样的话呢,我们就把这个公共表达,公共表表达式呢,咱们就说到这儿啊,大家呢,可以根据呃,实际的需要的话呢,你可以去用,前提呢是在8.0当中啊,那公共表表达式呢,我们可以去替代这个子查询啊,后边呢可以多次呢去引用。啊,然后这个递归的功能表表达式呢,其实大家你看到我刚才画的了,实际上它就相当于是个树形结构一样啊,那么在实现相关的需求方面呢,它的效率是比较高的啊就可以了。好,那这块呢,我们关于这个知识点呢,咱们就说到这儿,然后呢,关于这一章的这个课后练习题啊,我这个呢,就给大家提供了一个啊。哎,我给大家写了一个,这个呢,就是使用一下咱们上面讲的这个窗口函数来做的啊,也比较简单。
19:00
啊也比较简单一些,然后我这块呢,就把它呢CTRLC啊,咱们再去新建一个啊CTRLV啊这个其他的新特性的课后练习。行这块呢,我们就把这个呢给大家说一下啊,CTRLCCTRLSCTRLV来保存一下啊。好,这个题目呢,也比较简单啊,咱们就直接呢拿过来,哎,创建一个表啊,这是整个这个题目的需求啊,CTRLC。哎,粘过来,哎,我们还是做一个准备啊,咱们创建一个数据库。啊,Create一下叫database是吧。嗯,我们啊叫哎跟下边这个一样吧,哎,Test的18,哎,下划线这个咱们叫一个MYS8吧,啊这个是新特性的啊这个情况啊好这块我们选中,哎把它呢跑起来。接下来我们去use一下咱们当前的这个TEST18。My circle。八是吧。好,这块我们把它选中呢,执行一下好的,那么在这个数据库下呢,咱们现在呢,是创建了一个表,哎,把这个表呢,我们做起来。
20:04
然后呢,往这个表里边儿呢,我们去添加了这样的几条记录啊,跑起来。啊,六条记录,首先呢,我们去看一下啊,Select星from一下,我们这个叫students。这个表里边呢,其实就录,就是记录了这个学生他的这个姓名,还有他的这个考试的这个分数啊,考试的分数,这里边的话呢,我们有些同学这个考试分数啊,你看他是相同的是吧?好,下边的话呢,我们希望呢,就是给做一个排序了啊,你就按照这个分数呢,从高往低去排,但是排的话呢,我们希望呢,你再给他排一个序号,排序号的话呢,以前呃,或者我们正常的话呢,你就得考虑到相同的时候呢,应该怎么办,你是都写成同样的名次呢,还是怎么着啊,哎,所以这块呢,我们就用到这个叫序号函数了。对吧,哎,就这意思啊好,那这块呢,我们看怎么去实现啊。Select是吧,咱们一上来的话呢,你可以呢,就是习惯上把这个名字呢,是不是写到前面了,那你上来的话呢,相当于就是写我们这样的几个函数了,对吧?嗯,Select呢,嗯,比如说你先写这个叫row number,哎,这是一个函数啊,这个咱们习惯上这个都写成大写的,你就咱也给他成大写吧。
21:08
这个函数,但是这个函数的话呢,哎,我们只要写这个窗口函数的后边呢,你得对应的这个叫over啊,在over后边的话呢,你得有一个我们这个小块里边有那个position这意思吧,好,那我们这个partition怎么去写?啊,这个排列线怎么去写。这个呢,我们,呃,像咱们刚才讲的那个例题的时候呢,涉及到了是不是他们有相同的那个,哎,咱们叫什么来着。哎,相同的,这个叫category是吧。这个在哪呢?哎,在后边这块啊,我们呢是有相同的,这叫哎category,所以说呢,我们在写这over的时候呢,它会有一个partition啊,因为涉及到一个分组了,叫partition by,哎这么着,那你现像现在的话呢,我们这里边是不是一个人就是一个人啊,没有所谓的分组了,所以说呢,这块呢,比我们讲的那个例题呢还要简单。如果你要分组也没有的话呢,是不是就只剩order by了呀?哎,所以这块呢,就非常简单啊,咱们这块呢,只需要呢去写这个order by就可以了,哎,咱们order by的话呢,是需要按照这个叫points进行一个排序,是不是倒叙啊,哎,De一下哎就这样。
22:13
哎,这样就可以了啊,嗯,这个写完以后的话呢,因为它比较长,充当的一个字段名的话呢,不是特别的友好,所以你可以呢,就是取一个别名吧,啊这个我们可以写成比如说叫来排序一吧,哎,用这个。双引号,我们去起这个边名啊。叫排序一好,这个呢,就相当于是我们第一个啊就出来了啊,你要是觉得不是太好看的,咱们可以就这么着吧啊那么类似于它呢,我把它CTRLC一下,第二种排序,第三种排序,这呢分别呢,是不是使用的就是我们这个函数啊,这个窗口函数是吧。哎,还有这个这两个的区别还记得吧。啊,一会儿我们看一看这个效果哈。这个我们叫排序二,这个呢叫排序三是吧,好,然后在后边的话呢,我们再查一下这个学生的这几个段,比如说你自己的ID啊,哎,你的这个叫student是吧,然后呢,还有那个叫upon。
23:05
是吧,哎,像这种情况,这个ID呢,不行就不查了,就这么着是吧,然后呢,我们再去from一下这个students。哎,这样一个表来写完了啊来选中呢,走起,哎,这两看就出来了啊嗯,这呢是我们按照这个他的成绩呢去排序的啊,九十八十九啊,88 77行,然后呢,我们第一种方式呢,叫做road number了,你就正常往下去排这个序号就完了,这个是最简单粗暴的啊,第二种排序的话呢,诶如果出现相同名词,等你看这写的是一,然后呢,再往下89这个人呢,我们就写的是三了,哎,这是我们这个rank它的一个特点。啊,然后这个就是四四又一样了,这个就写六了,而我们这个的话呢,就不不一样了。这个的话呢。他俩的分数一样啊,都是第一名,这个是第二名啊,这俩呢,都是第三名啊,这个是第四。OK吧,哎,这就是这样一个场景。一个场景好,这个呢,咱们就写完了,这个写完以后呢,我这块我想写个方式一,咱们呢,那会儿讲的时候,是不是老师拿那个写了window的那个去改成咱们这种方式,那我现在呢,拿着它呢,咱们往回改一下啊啊在这块呢,我们是from一下叫students,正常呢,你要有where呢,这块呢继续写这个where啊,如果要你要没有where的话呢,我们这个位置呢,就可以写个叫window了,哎window的话呢,我们起个别名啊,比如咱就叫W吧。
24:17
哎,然后呢,后边一个叫S,哎在后边的话呢,咱们就把整个这个呢,CTRLX我就拿过来了。哎,就这个意思啊,那拿回来以后呢,你这个位置呢,我就直接写一个叫W。小写的啊。就因为这块呢,我们这啊,因为我们这块呢,这是一个W嘛,哎,所以这块就叫W啊。嗯,这个rank over啊这块我来个W。然后这个位置啊,一个W。OK吧,哎,相当于呢,我们使用的都是这个结构,哎来我们把它呢选中再再去呢执行一下,哎,你看还是没有问题的,好,这个呢,就是我们实现的这两种方式啊啊那么关于咱们这个课后题的话呢,咱就讲这样的一个题目就行了啊新特性大家这块呢,整体上熟悉一下,我们花了这一个多小时的时间呢,给大家去讲这个新特性,哎大家下来的话呢,你愿意呢,这个演示一下,你就演示一下啊,不愿意演示的话呢,你就听一听啊也可以啊,尽可能的我们这个花更少的时间呢,让大家的比较高效的把这里边的窗口函数,还有我们这个呃,公共表表达式呢给弄清楚。
25:19
好,同学们随着呢,咱们这个第18章的这个课练习题,这个讲解完毕以后啊,整个呢,咱们关于my circle的这个基础篇的啊,这18个章节的内容啊,咱们就给大家讲完了啊,那么大家下来的话呢,这个呃,多去练一练啊,希望呢,整个宋老师讲解的这套视频呢,能够帮助到你学习这个mysle啊,基础啊,咱们叫做基础,然后呢,在大家学习这个MYSQL基础片的同时啊,我呢就开始去录咱们这个叫高级特性片,哎高级特性片里边这个内容量按量来讲的话呢,其实比我们这个纪录片的东西呢,还要多一些,哎,但是这块呢,我觉得也是真正的特别有价值的这个地方,哎,大家在实际的生产环境当中呢,这个肯定是诶能够应用的上的啊,哎,对你找工作的话呢,我觉得也是会有很大的帮助的,那那咱们商务的特点呢,就是免费的发放给大家啊,哎,希望呢能够帮助到大家啊。
26:11
哎,这个我从本科毕业呢,其实就当老师了,哎,那时候呢,是教这个中学生啊,然后现在呢,可能呃教的大家的话,通常都是不不管是中学生了啊,就可能大家都大学毕业了啊呃,希望呢,从心眼里边讲啊,还是希望能够帮助到大家的啊呃,那么熟悉这个宋老师讲课的同学呢,应该知道,一般呢,我在讲完一套课程的时候呢,习惯上在最后呢,呃,聊两句哈。那么在我们这个基录片讲完以后的话呢,呃,我也呢,我呢也想给大家呢去做一个分享啊,算是我这样的一段时间之内的一些思考和经历吧,啊这里边呢,我想给大家分享两个东西啊,第一个的话呢,大家看到这个图了啊,这里边儿写的叫做一个自律的人啊,越自律呢啊越优秀啊外边呢有一些诱惑是吧?啊图呢是一方面啊,那主要呢,想给大家提到一个词呢,就是叫做自律。
27:02
这个以前的话呢,我没有特别的感受到说自律这个词呢,它有多好,呃但是呢,呃,进来的话呢,越来越感受到这个词呢,还真的是一个特别特别重要的一个词哈,嗯,不管呢,你是一个偏小一点的正在上学的一个学生,还是呢正在工作是吧。这个呃,大家呢,基本上对一个事情的话,哎,什么样是对的,什么样是错的,基本上这个价值观的判断呢,都不会有太大的差别,除非你是一个很偏激,很很这个呃,很很偏的一个人了,是吧,执拗的一个人,否则的话呢,我们都知道哪些东西是对的啊,那么关键就是在这个对的事情上呢,我们能不能持续的去坚持去做,那么这一点上的话呢,不同的人的差别是极大的。啊是极大的,那么希望呢大家,诶,你对于自己认可的这个方向确定好以后的话呢,不断的去前进啊,不断的去坚持啊,做一个自律的人,在这个过程当中呢,要禁得住诱惑。啊禁得住诱惑,比如说呢,有的同学呢,在商务呢,学完这个技术课之后呢,呃去做开发啊,开发呢可能还没有做这个,这个半年一年的啊外边有很多的诱惑存在啊,又去去创业去了啊又去这个折腾这个折腾那个了,结果最后的话呢,八成呢可能都没折腾成,然后最后呢,再去做技术呢,发现年龄上又偏大了,然后技术的话呢,又已经呃偏旧了啊就有很多的问题哈,就是大家呢,呃在你明确,当然呢,也不是说你不去做这个。
28:27
呃,这个开发,然后就就不能去创业了啊,就是你一旦认定好这个事儿以后的话呢,呃,要非常的去把它贯彻下去啊,这个呢,是我想给大家去说的一个点啊。呃,应该这么讲吧,就是这个,呃,你像那个清华的人呢,呃,像以前哈,以前咱们比如说上大,像那个中学的时候,高中大家都读三年,都读三年的话呢,诶真的人家那哥们儿,他就是聪明啊,又相对来说刻苦,他就上了清华了,那么在真正毕业以后的话呢,诶我的感触就是啊,就是你学历呢,可能之前是确实特别好,但是呢,如果在这个工作的场景,他不管是三年了,他可能是放眼到是不是30年甚至更长的这个时间了,对吧。
29:05
啊,那么这个过程当中,即使你很聪明啊,之前呢,是清华的,是这个哪哪的这个毕业的是吧,但是如果说你不能够持续的去做一件事情的话呢,你可能还真的赶不上一个大专学历的人持续的去做一个事情。啊,因为呢,哎,那怎么讲呢,说哎我呢可能智力不如你,PK不过你,但是呢,我可以用时间去怼出来。对吧,哎,那这个过程当中呢,需要大家呢去自律啊啊这是第一个想给大家分享的,第二个的话呢,呃,如何看待生活上和工作上的这个冗余和繁冗余啊,这个呢,我在讲课过程当中啊,其实给大家呢,也稍微的提到过这样的一个我的感感触哈,呃,就是大家呢,你会发现呢,呃,包括像咱们这个疫情的出现啊。全世界的话呢,现在你看很多地方都非常乱啊,物资呢是极其紧缺的啊,看到那个欧洲的有些国家那个超市里边都是把那个图片都放上去,就是没有东西啊,因为现在这个世界上呢,呃就是呃越来越发展啊,大家互相彼此之间的这个呃紧密的联系度呢,就会越来越高啊,那这个过程当中的话呢,呃,从这个利益出发呢,会尽可能的去减少这个工作上或者生活上的一些冗余。
30:10
啊,就是让没有必要的这些东西呢,我们就给它砍掉了,去节省这个成本,所以现在这个世界呢,就是大家耦合度呢,就极其的高,哎,包括呢,像我们说现在这个芯片呢,突然短缺了,引发呢,相关的一系列的手机也好,汽车也好,现在都是这个缺锌,然后呢,对,都是生产不出来,对吧,依存度会越来越高啊。那当然呢,我们也能够看到这个很多的工作上呢,会有一些繁,有一些这个冗余的场景啊,这个一些冗余场景,你比如说呢,像这个地铁也好,或者是高铁也好啊,那么在这个呃,具体比如说进到某一个站的位置上呢,呃,这那比如说我们正常的有这个三道啊就可以够用了,它还会去多备出来两道,万一呢,在一些特殊场景下需要用的,哎,他这块哎就要去使用是吧?哎包括呢,这个列车呢,它也会临时的备备一些呢,就方便呢,我们呃,临时的时候呢,要家用的啊这呢,其实都是生活上哎或者工作当中我们会提供一些冗余的一些场景,但是这个呢,还是整体上来讲是比较少的。
31:08
啊,大方向呢,实际上都是一种反冗余的一种状态,包括呢,我们写代码也是一样。我们更多的实际上呢,是一提到冗余呢,就觉得它是个贬义词,虽然说带一些特殊的场景下呢,我们需要呢,人为的去制造一些冗余是吧,让它更具备这种稳定性和健壮性,当然大部分场景呢,实际上是繁荣于的啊,那么从这个角度来看的话呢,这个社会呢,实际上是越来越脆弱的,因为彼此的依存度呢,就会越来越高,对吧?哎,这是社会的一个脆弱性,那么我们个人在这个当中呢,是处在一个什么样的环节呢?我觉得其实就是一个螺丝钉的一个感觉。啊,那么这个社会的话呢,它这个不断的去运转啊,我们每个人跟跟你下边一个人呢,大家都是紧密联系在一起的,以前呢,哎,我们在农耕,农耕这个文明当中,一个人呢,他需要具备的能力,或者是这个游猎民,这个这个游猎状态的时候呢,呃,一个人需要具备的能力呢,呃是很全面的啊呃你既得呃这个会这个穿衣做饭是吧,还得需要去狩猎啊,甚至编织一些生活的一些必需品。
32:11
啊,等等啊,每个人需要的技能是非常高的,但是现在这个社会高度发达以后呢,有可能你只需要一招啊,以前老祖宗就讲过叫一招鲜吃遍天,现在这种感觉呢,我觉得是越来越强烈的。啊,你包括我来讲哈,我可能这个很久很久我都没有做过饭了啊,不是自己的,呃,媳妇儿做或者是妈做,哎,就是我就点外卖了,就是呃要放在以前的话呢,我要自己都不会去做饭的话呢,那可能我就根本活不下来,但是现在不用了,诶我只需要呢,把我最擅长的东西我做好就可以了,然后呢,呃,我不想做的东西,哪怕说比如我家里边特别乱,以前的话那就是自己去收拾,现在的话呢,呃,如果我认为说我的时间去收拾一个家,花两天时间,两天的时间我能创造出的价值比我雇佣一个人。啊,价值会更高,那我就可以去顾别人来帮我去收拾家,哎以后呢,其实就相当于是这样的一种场景,所以呢,哎,每个人一定要,哎我想说的这个点呢,就归结出来就是每个人呢,咱们大家啊,听这个视频,听到这块的这个同学也好,朋友也好哈,啊我的建议呢,就是大家一定要充分发挥自己的长板啊,把你的长板呢练的越高越好啊这种不可替代性呢,就是越强,然后你的价值呢就会越大。
33:27
对吧,那么对于这种,呃,有的我们经常看一些场景说看这个短板啊,呃,这个短板的话呢,我觉得呢,是你在公司的发展当中,你到了一定的层级了,比如是一个管理者了,然后再要往上去升啊,你需要升成这种总经理或者这个副总的这种级别的时候呢,可能会关注到你的长板,呃因为呢,呃那样的几个备选人的话呢,大家的长板呢,可能都比较清晰的,那就看谁的这个短板,那短板呢,有可能会呃这个影响你这个选成这个一把手或者这个二把手了。对吧,因为你在这个短板呢,有可能会这个是一个致命性的啊,对整个公司呢,非非常不利啊,就是你要是想往上晋升的时候呢,会关注一个这个这个短板啊,尤其是这个级别更高的时候啊,但是我们要作为一个普通人来讲啊,你要是想在这个社会上去立足,生存下来,还生存的不错。
34:16
我的建议呢,就是大家一定要充分发挥自己的长板,如果呢,你觉得技术呢,呃能够作为你的长板,那就一定要在呃合适的这个年龄段呢,把这个长板练得越高越好。啊,比如说呢,你在30岁的时候呢,你达到了年薪50万,那我觉得呢,你就是30岁多了以后啊,哪怕呢,随着年龄的增长呢,呃,会有一些不占优势,但是你往下掉呢,你也不会这个薪资呢掉太多对吧,但是你要说30岁的话,你这个薪资的还还是10万呢,那你想想后边的话呢,就很有可能是面向这个淘汰的这样的一个边缘。哎,这个大家呢,现在也要做一个思考啊,哎,不知道我刚才讲的这两个事儿呢,有没有给大家产生一些共鸣啊,这就算是我的一些近段的一个,呃,这个小想法啊呃,希望呢能够帮助到大家,好,那么整个呢,咱们关于MYSQL基础片啊,咱们就讲到这儿啊,这个欢迎大家期待啊,我们这个高级篇啊,好,再见。
我来说两句