00:00
咱们把这几道经典的子查询的这个案例给说一下哈,这几道题做的时候是不是感觉还是挺有挑战性的,还是蛮有意思的对吧?嗯,就是你会发现做完了非常有成就感是吧?这比你这个玩一趟要感感受好多了啊呃,先看一下第一题,查询工资最低的员工信息,这个是不是就类似于我刚才说的那道题啊啊那么我们要做的话呢,就是呃,先去查询的,先去查询的第一步,嗯一哈,这我们应该先查询是不是最低的工资啊呃,你先拿到这个工资再说,那select面对吧,Salary from我们的employees,哎,这绝对就一个值是吧?然后呢,我们再去做第二步,我们查询是不是要求查的last name呀,Salary是吧?呃,查询它那么要求呢,我们的salary。
01:00
等于一好完事,那所以说它应该是last name salary from employees where,谁嘞,Salary等于好是不是,你把这个摘过来就行了,这个就完了哈,刚才做过了,好OK啊,把这个执行看对不对,是叫他吧,哎,最低工资两千一啊行了,再看一下第二题,查询平均工资最低的部信息,先查谁呀,平均工资最低的部门信息,他其实意思是说你得把这个部门表里边对应的什么部门编号,部门名这些是不是都查出来啊啊哎,那很显然我我得知道一个部门编号,我是不是才能查他呀,所以说你肯定应该先查平均工资最低的那个部门编号啊,再根据部门编号查他,但是你部门编号。
02:00
也不好查是不是,哎,你先查询的第一步应该是各部门的平均工资,好,那我们一起写啊,Select avg salary部门编号是不是要查出来from我们的employees group是group by吧,Group by department ID行了,那查出来之后我们先看一下是不是就这样,哎这样之后他让我们查谁呀,平均工资最低的,那那应该是在这个结果上去去找到的,对吧,最低的应该是多少呢?3475,是不是再要一个不分编号呀,是不是这种感觉,你们怎么做的,这一步直接看一下50是吧,我们是能看出来了啊,再怎么着呀,然后再去查询。
03:00
那这个结果集上的它的这一列的是不是最低值啊,可以吧,那第二步的话就是查询一结果上,结果上的是不是最低平均工资,是不是这个意思,好,那应该是这样哈,是不是就把它当表了呀,是不是当表了,那就是select select把它当表了,那么我先这先查序列表,先省着啊,先选着from是不是后面加它,好我们先把它粘过来,小括号把这个粘过来,把这个缩进一下,是不是得起别名呀?哎,那这个起个别名,比方叫做AGDEP可以吧,这个呢,我们起个别名叫AG对吧?那么这样的话呢,就是这个表的话,相当于有一个字段是不是叫AG啊,我们可以看一眼啊,对吧,我是不是在找AG的对比值啊?哎,对了,那应该是面。
04:00
AG是不是这样去写啊,跟上哈,我们看一下是不是那个3475对吧?ID,但是我这是不是还是查不出ID了,我能不能这么写啊,咱们是不是说了和分组函数一同查询的字段必须是分组后的对吧?有的时老师你分了这个分了现在这个是不是相当于一个表了,嗯,另外一张表了哈,所以不能这么写啊,怎么办?最低工资有了,最低平均工资有了,对你还得就跟做这道题似的,是不是查询最低的那个东西们呀,嗯,是不是在查你的底盘的美台,的确,呃,其实后面有很多种做法了,对你有很多种办法,你可以怎么着呢?就是呃,查询部门编号对不对,看一下谁的平均工资是不是等于他呀,我们先试一下这种啰嗦的哈,第三步。
05:00
那你就是查询一下哪个部门编号的,也就是平均工资等于是不是二啊,是不是这个意思啊,好,那意思是说你是不是得先把各部门平均工资给找到好跟上哈,然后再干嘛,是不是having啊,Having我们的avg salary对不对,等于是不是刚才的这个结果啊,是吧,啊等于刚才的这一大堆是不是这样的一个感觉啊哎,这样你的部门编号就能找到哈,嗯,好,但是这样是不是有点麻烦呀,嗯,你你看能不能出来,首先能出来的哈,有点麻烦,那你终于把共鸣编号找到了,我再去找这个是不是就简单了呀?嗯,那那那我们要我们先用这个麻烦都做完吧,好吧,啊,等会再说,看有没有简单的哈,那我这个再来一个是不是第四步呀,第四步。
06:00
我是不是查询部门信息是吧?啊,那应该是部门编号,是不是等于它那就是select啊,我们department点行吧行吧,嗯,然后你这个AG要不要了,这个随你是不是,嗯,那我就from我们的depart Ms表d where,我们d.department还低,等于其实就是这个是不是,嗯,可以这样写是不是,嗯,可以这样,其实他这个部门的平均工资我们也可以拿到,可以拿到吗?哎,这个的你要是用这种外二的查询这个地方还要还还能有吗?不能了啊,这个语法是会报错的,咱们说过这个里边支持的是一列对不对啊,好,这样去写,当然这个就出来了哈啊。好是50号部门吧,是啊,这个就做出来,但是有点啰嗦是吧,有点啰嗦啊啊,那可以怎么做呀,你可以这么做来看这哈,我们教一个简单的。
07:03
你到这一步之后,这不是拿到各部门的平均工资了吗?呃,我们其实可以在这个基础上进行排序吧,排序完了之后去limit不是学了吗?对不对?我是不是可以提取第一行呀,可以吧,这样不就得到了这一行吗?可不可以啊,是不是可以这么干呀?嗯,所以说这个题啊,那么我这样哈,我这个就让它当成方式一吧,嗯,好,那么我们再来一个方式,也就是其实啊做一道题有很多种做法的啊,它不仅限于一种,只要你做出来就行了,好再往下,我这个时候啊,各部门的聘用工资不是找到了吗?我可以干嘛呢?求出是不是最低的,呃,就是求出最低的啊,然后最低平均工资的,我们要的是一个谁部门编号对吧,刚才是不是好几步来着,其实啊,我就可以在这个基础之上干嘛呢?来一个那个我就是要谁departmentd可以吧,我就要它,然后呢,在这咋着,Order在谁呀?Avg salary是不是可以这样啊,然后。
08:23
不能在干嘛呢?降降序还是升序啊,升序是吧,然后limit是不是一呀?哎,我们看一下有没有啊,我要的就是50是50吧,是不是一句话就完事了,是不是没有用上子查询啊,就这就不用子查询啊,你50号有了你再去怎么着啊,做这一步是不是查询部门信息啊啊其实我这两步甚至就当一步也行,是不是啊,我就我就为了看清楚啊,就跟他分开了,第三查询部门信息直接select星可以吧,From我们的departments表,Where我们的departmentd是不是等于刚才的结果呀?啊,这不就行了吗?这个简单吧,这个简单啊好嗯,所以说有很多种办法哈,哎,效果当然是一样的,50号对吧?
09:23
完事是吧?嗯,行了,这是关于这一道题,接下来我们看一下第三题,这个第三题好像跟第二题差不多是吧?啊,这个是多了一个该部门的平均工资,好,这个应该怎么去写呀?查询平均工资最低的部门信息和该部门的平均工资也要。上边那个我当然我首先还是这一步肯定要有的,没问题吧,嗯,这一步肯定要有各部门的薪训工资,对吧?然后我是不是还要一个最低的,最低的我能不能用一下这个呀?哎,那我比方说把它加过来好,但是这个还要谁呀,Avg,所以这个时候你还要把这个avg是不是给你查出来呀,嗯,Salary是不是走到这一步了,好,这样的话就是既有部门编号,又有平均工资,诶我执行一下对吧?好,然后呢,我还想要一个部门信息啊,部门信息查询它,那么当然呢,这个部门信息表在这,呃,我们用刚才的这种行吗?你要用刚才的这种,你能查出平均工资了吗?不能,所以这个时候你要用一个连接查询,我说的对吧,你应该。
10:51
这个连接查询,所以怎么写呢?Select注意哈,地点星逗号,也就是把它你可以当成一个表,可不可以啊,当成一个表啊,那我们就是sla地点星,然后是在谁呀,当成一个表,或者是我想想看能不能,其实用子查询也行,Flag的后的子查询能不能行啊。
11:14
也行,好像用sla的互子查询好像也行,连接查询也行啊,咱们先用连接查询来试一下哈,那我这的话就是把它起个边名,注意看哈,呃,我把这个一大堆CTRLC我这先选着,然后from表的话,是不是有一个departments表D呀,好,Inner join,另外一个表我这样去写好粘过来,这是不是一大堆好注意哈,瞪大眼睛了,这个我得起个别名,这个就叫AG吧。这个呢,我们就还还叫它a GA de可以吧啊,然后是不是再去加on条件呀啊,D点它等于a a gadep点是不是还是department ID是不是两个表连接啊啊然后这其实查的就是AG没毛病吧,哎,这个就完事儿了,然后我们再去执行是不是出来了,看这个数据是对的吧,哎,这样做没问题哈,我用的是个连接查询,涉及到的子查询呢,涉及到子查是不?这个叫做表子查询啊,表子查询啊。
12:28
假如说我用s select的子查询能不能做呀,咱不是学过s select的,后面可以放子查询吗?想一想咱们既然是去那个复习子查询呢,就想一想怎么做,把这个弄大哈,也就第三步,我们换一下,看一下能不能啊,那意思就是说地点星,然后逗号,那后面的话,我查的这个东西是不是就差不多是它呀,但是我只要谁只要他,所以我把这个其实还得括起来是不是,嗯,也起上个别名吧。
13:06
这一大堆是不是这样一个感觉呀,好低点星是不是就不门编号呀,没毛病是吧?嗯,那应该是select低点星,然后再去查询它这个部门编号我就不要了,是不是这样一个意思,嗯,然后这个里边其实还要加一个where条件吧,要不要加,诶这个里边avg from,它group by order by。好像要加,是不是要加一个是在这加还是在后面加,我现在在这先写全from,这是不是就是department d啊,哎,这应该要加在这去加啊Y我们D点是不是它等于你这个表叫做AGDEP点,呃,叫做什么嘞?呃,其实也是department idd,我看一下能不能找到啊,看能不能这么加,呃,删了应该是找不到了是吧?嗯,因为这个的话应该是和他是不是连一下呀,嗯,还是得需要连一下哈,呃,找不到它了,因为我们删掉它了,对吧,也就是这个新的这个虚拟表里边是不是只认识这一个字段了呀啊,他不认识了,那我看一下在这儿哈,在这儿要是加的话,看能不能行,Group bag,那得加where了是不是,嗯,Group bag where应该是在这是吧?嗯,这应该。
14:34
它不行,那这个逻辑上就不对了,是吧,他还是没有它是不是我们试一下看一下是不是还是没有他呀,啊那就算了啊,那那也就是其实意思是说我们这儿只想要一个平均工资,但是呢,我又想用到了,是不是部门编号呀啊所以这样就不行了,因为我们拉的后面只支持是不是标量子查询啊,没有办法查询两列,没有办法查两列啊,要能查询两列的话就好了,我们就可以把条件书放这儿也挺好呀,啊行吧,那这个的话就过了哈,把这个根去掉,那所以说呢,咱们这个查询部门信息,我们最好的解决方案呢,那就是用用到它叫做表子查询以及连接啊,两个都用上了,行吧,然后我们再往下看一下第四题,查询平均工资最高的job信息,这个跟前面其实也类似,对不对,嗯,我们这个。
15:34
应该是先去查询查询最高的,呃,平均工资最高的job信息,应该查询每个job的平均工资能填上吧?啊,那应该是select avg salary对吧?哎,那么再去把job ID给查出来,From我们的employees表,Group bag job ID可以了,是不是来我们先看一下这个表哈,啊,那你看,然后找平均工资最高的,其实也就是这个字段,是不是最大的值啊啊,那么我们可以降序一下对吧?降序那就是order by avg,然后salary降序DC,然后再去进行一个limit,一好,我们看一下是最高的吧,哎,这个不就对了吗?这个分号先取啊,那这个应。
16:34
应该就是查询是不是最高的呀,嗯,最高的drop的平均工资没问题吧?啊,那么查询出来之后,我还想去查询是不是这个job信息啊,这跟刚才那道题很像啊,就是把部门换成了job,那我们再去查询job信息,那就是select的星号from我们的是不是job job job资表对不对?Where,我们的job ID是叫这个吗?是看一眼啊啊是的是吧,Where job ID等于啊,他因为只要的是job信息,那个平均工资是不要的,所以我用这种等于进行一个标量子查询是没问题的,对吧,但是要求你的平均工资得去掉是吧?嗯,应该这样去写哈,那现在我们再去执行就出来了啊,如果你要是要那个工资的话,那还得连接,是不是还得用连接查询啊,哎,这个要。
17:34
注意,好吧,再看第五题,查询平均工资高于公司平均工资的部门挺绕的,是不是先查谁上?对,你得先去查询,先去查询公司的总的这个平均工资吧,那就是select avg salary对吧?然后再from employees表,这是总的了啊,这肯定就一个值是不是?然后呢,我们再去查询每个部门的平均工资对不对?好,那每个部门的平均工资是这样的,哎,然后再来一个group five,我们的department来第一对吧?哎,然后怎么着?哎,如果我再分一步,那就是第三步,是不是在筛选呀,筛选。
18:34
来我们这个二这个结果集吧,啊满足是不是我们的平均工资大于多少呀,一可以这样说吧,啊,那也就是在这个结果集的基础之上来一步,再来一个having对吧?Having谁呀?Having我的avg salary好大于对是把这个一给粘过来就行了啊他是这样的哈,能跟上吧,查好我们看一下查的是平均工资吧啊这些嗯,还要谁部门是吧,那你要要部门的话,那就是逗号,是不是把这个加上呀,他还低对吧?好,是不是有这些部门呀,嗯,这个最低工资最那个叫做平均工资最低的是哪个部门呀,我们看一眼啊招。
19:34
这我也没查部门是吧,看一下这个数据对不对啊,比department查ID这个是没有筛选之前是不是每个部门的呀,应该这样看是不是50啊,所以最后的结果肯定没有50,我说的对吧?啊,有没有50啊,肯定没有50,当然也有的,可能其他的也有没有了是吧?嗯,行,都是大于那个是多少的,3000多是吧?嗯,大约是是3000多6000多是吧。
20:05
6000多,我这个数据没问题吧?啊,是不是都大于6000多呀,他就完了啊,行了,然后再往下看一下第六题,查询出公司中所有manager的详细信息,是不是跟我出的那道题也很像啊,哎,我们应该先去查询是不是这个所有manager涉及到的员工编号啊,哎,那就是所有manager的员工编号是这样吧?哎,怎么查的呢?Select manager ID from,我们的employees表,这肯定是一大堆是吧?哎,而且我们最好其实去一下虫是不是有很多重复啊啊,去一下虫比较好,那我这儿就是第一次TNK的啊,加上它哈,你看原来107行,现在去完重19行是不是差别很大呀?嗯,行,再往下我们再去查询谁呀,这是一哈。
21:05
这是二我们再去查询是不是详细信息呀,详细信息那满足我们的是不是这个employeed呀,哎是不是等于我们一这个结果,那就是select星吧from我们的employees well employee哎第1IN吧,或者写这个等于any行不行,等于any行不行,可以吧,效果一样啊,效果一样,咱们试一下好,然后我们再去执行看一下,就这些对不对,就这些啊没问题吧,这个数据啊,哎有的时候怎么是18呀,刚才是19来着,我记得有一个为谁的,是不是有一个文章啊,对吧?嗯,所以这个没问题哈,第七第七题各部门。
22:05
装最高工资,装最高工资,装最低的,哎呀,那个部门的还最低工资是多少?是不是应该先去求各部门的最高还是最低工资,对吧?应该先去查询各部门的最高工资?哎,看来做这些题语文没学好还也不行是吧?Sla的最高工资应该是max salary from我们的employees group by department ID,好了,那这个是各部门的最高工资了,但是是不是找最低的那个部门啊,我们可以先找出第一个,也就是其实也就先找出最低的那个工资了,可以吧?啊,那应该进行一个升序是吧?All the back marks。
23:05
Salary是程序吧,在LIMIT1,好,我们先找出这个来哈,哎,这个应该是最低的那个,最低的那个最高工资对不对啊,那就是查询各部门的最高工资中最低的那个最低的是不是这样是没毛病吧,行,然后呢,我们再看第二题第二步,第二步应该要查什查询哪个部门的最高工资等于一,我说的对吧?嗯,咱们先用这种逻辑去走啊,那应该是不是就是先去还是得来一遍这个吧,是不是,然后在heavy max salary等于谁呀?哎,是不是还是这样,是不是等于刚才这个一呀。
24:05
啊,这样麻烦了是吧,有点麻烦,那我们应该是怎么着简单来着,是不是这一步就可以把那个部门编号照出了啊,是不是这样就行了啊,那就department ID,那这个我就不要谁了,不要他这个用不着它是不是,那我这就可以最低的部门编号是不是可以找出来呀?诶看一眼十号没问题吧啊,然后再干啥十号部门的最低工资是不是查询一结果的那个部门的最最低工资这样简单是不是啊,所以发这个厘米的个排序搭配使用还挺好的是不是,那这怎么写呀,Select的in salary from employees表后面。怎么写where,把where我们的department ID等于用等于还是用什么等于就行,因为这个就一个值,哎,不能剪切CTRLC好粘过来对吧?啊,把这个弄一下哈,那应该是十号部门的最低工资是4400,是最是四千四吗?是的是吧?嗯,哎,你要不相信的话,你把数据打开对不对?我们把这个也看一眼啊,看是不是十号是吧?啊行了,最后一道题,查询平均工资最高的部门的manager的相应信息,啥意思啊,这是我们是不是应该先找出平均工资最高的那个部门编号啊,找到部门编号就会找到对应的manager找ID,但manager ID找到了,这个也没找到呀。
25:59
是不是还得进行一个连接查询啊,也挺麻烦的,这道题是不是也挺麻烦哈,那我应该先第一步先去查询平均工资最高的部门编号,我说的对吧?啊,这个咱们前面一直在做select部门编号department ID from employees表啊,没有where吧,Group by department ID having,有having没有,没有是吧,Order by,我们的avg salary最高的降去吧,在LIMIT1好,这是平均工资最高的部门编号90,对吧,然后呢,第二步。
26:55
第二步你部门编号有了,那么再去查manager ID的这些,其实这个manager ID和谁应该连接呀,是不是和它要连接呀,这两个表先连接,再进行一个外筛选公司对吧?啊,所以第二步的话应该是将我们的employees和我们的departments连接查询,那么筛选条件用上了一,我说的对吧?啊,筛选条件是一啊,行来看一下,所以接下来一步应该是这样,Select谁呀,这是是不是这一堆,嗯,把这个整过来好放这吧。
27:43
啊啊,Select的这一大堆,那当然这个的话呢,你你你得加个限定对吧,那比方说就是地点这个好,然后再去from from谁呀,Employees in,我们假如说用in drawing可以吧,Inner drawing谁呀,Depart at d对不对啊,然后我们再去加啊直接写后面吧,啊谁呢一点错了,不是它应该是d.manager ID等于e.employee ID,这个连接条件应该是它对吧?啊,因为他要查的是你部门该部门的领导,因为一个部门是不是就一个领导啊,这个领导的一些东西,而这个领导编号是不是来自于他呀?哎,这个提议决定了啊,他的连接条件应该是他和他他们两个连接。
28:43
这次是不是不是说部门之间的连接了,他不是让查部门信息,他是让查领导信息对不对?嗯,所以说这个连接条件要找对了哈,再往下连接条件找完了,我们再去where where,谁,Where,是不是我们第1.departmentid等等于吧,是不是只查询啊,再粘过来就行了啊,这个比较长,所以我就换行了,是不是这一大堆啊,挺多的吧,好,完事我们看一下对不对,哎,这一大堆这些出来了,就是它是不是啊,你看这样搜狗语句它就涉及到了很多,行了,我们发现写一条查询语句的话,你要是写好的话也不简单了,是不是啊,行,这个就完事了啊,当然如果特别长,你要感觉自己。
29:43
格式都不好看,可以按一下F12。
我来说两句