00:00
这几道题的话呢,应该难度不太大,对吧,先看一下第一题,每个专业的学生人数,找同学来说吧,呃,张飞你来说张飞呢啊,就你了啊。每个专业的学生人数major idea,什么idea major啊,行了哈,哎,这是第一题啊,挺好的,来看一下第二题,第二题的话是参加考试的学生中,每个学生的平均分最高分。每个学生的平均分最高分,这个的话应该是不是用到成绩表呀,嗯,这个的话我们看一下你用娟你来说一下,对,那这个的话应该是能够把学号是不是查出来了,From我们的是不是result表啊,Result表group by是这个吧啊student number好,请坐对的吧,啊行了,再看一下第三题,第三题徐新波学号姓名。
01:52
姓张的每个学生S点。
02:11
应该是join对吧?Join一下我们的result表R,嗯,s.student的number等于student number,好了,对,然后是where,姓张的student name like姓张打分号,对了,然后group by,谁嘞student number,那就是嗯,诶,应该是S点是吧?嗯,Number可以吧,嗯,还有没有heavy mean,然后是呃,Scar应该是大于60啊,那当然我们查询的这个里边就应该有s.student name,还有一个是呃,M高。
03:11
是不是应该有这个呀,嗯,好,请坐对的吧,啊,那这个就完事了哈,行,然后我们看一下最终的这个效果啊啊查询,然后这个能成功吗?这就好,我们一起看一下第四题啊,第四题是查询每个专业生日在这个之后的这个姓名和专业名称。呃,这道题其实出的稍微有点奇业啊,那我给大家发的应该是这个,没有这个每个的哈,如果有每个的话,我们就需要按姓名和专业名称是不是都分组呀,那所以说呢,我们这个其实把这个去掉会更好一点,那咱们直接做这样的一道题,说专业生日在1988年,专查询生日啊,在1988年1月一后的这个姓名和专业名称,那么生日的话在这儿,姓名的话是在这个地方,专业名称的话,它会涉及到了我们这的major表,是不是这个major name呀?嗯,那好吧,我们一起来写一下哈,嗯,Select,我们的姓名是student name,专业名是major name,然后再from我们两个表是不是连接呀,S,然后再照引我们的major表M2啊什么呢?S里边的major ID等于我们M点里边的major ID好两个表连接条连,连接条件行。
04:31
好了,我们再去写它的筛选生日在1988年1月1号,那么我们的生日呢?是born date,什么叫在他之后呀?啊,对了,也就是by date是不是大于它呀,那我们可以使用我们之前学习过的贝塔Di函数,哎,那么通过它的这个返回值来去判定到底谁大谁小谁小,哎,那么我们可以这样来去写,如果说我们这个前面的这个日期要大于后面的日期,那得塔蒂函数是不是返回一个正数啊,也就是大于零的数哈,那这样不就行了吗?好,这是第四题。
05:09
那我们再一起看一下第五题,说查询每个专业的男生人数和女生人数分别是多少啊,那我这弄一下哈。那每个专业的男生人数和女生人数。那么首先的话,每个专业我是不是应该按专业分组呀,哎,那也就是涉及到的是student表里边啊,那么我们要求一个人数啊,那么要按他来分组,那么按他分组之后还要求男生和女生的人数,那所以说我们是不是还有一个是呃,隐含的按什么呢?按性别分组,所以说我们可以这样去查人数嘛,那就是count星号。好,然后呢,再逗号性别逗号什么呢?Major ID from,我们的student表,Group bag,我们的thanks,还有major ID,好,那当然呢,我们这儿可以把这个加上一个别名个数,那行吧,我们现在看一下我们的这个最终结果哈。
06:09
哎,这个就出来了说呀,呃,一号专业的,一号专业的男生五个人,一号专业的女生三个人是不是就可以了。好,那当然呢,这个是其中的一种方式,我们可以实现,但是使用这种方式的话呢,我们最后显示的结果呢,诶不是特别好啊,因为的话我还得这样去看一遍说哎,一号的这样哈,哎,那么我们如果说我想哎怎么。也就是呢,我们最终呢,希望去实现这样的效果,呃,这个地方呢,是专业,然后是呃,接下来我还要查询的是男生,还有一个是女生的个数,那专业编号,比方说是一号专业,那查询的男生个数,举个例子是哎,你比方说一号专业男生的话应该是五个对吧?哎,五个啊,那女生的话呢,是一号专业是三个,哎,那我希望达到这个效果,二号专业同样的列出男生个数,女生个数,三号专业呢,也是这样,也就是最终我还是分为三组了。
07:07
那么只不过是每组呢,我们又罗列出了男和女,那所以说呢,哎,那么我们采用的这个这这个这个效果的话呢,我们应该是使用的第二种方式哈,方式二啊,也可以实现这道题的一个查询,而且效果会更好一点,那我最终查询出来的应该有,哎根据刚才效果是不是应该有majord,哎,然后是不是还有一个男生的个数,还有一个是女生的个数,当然男生的个数是多少,哎,这个还不确定呢。啊,那女生的个数还不知道呢,那很显然这这个地方应该是不是可以用到一个什么,是不是子查询啊,啊select后面的子查询啊,然后再去from,哎,我们的这个表,比方说student表哈,啊student,诶student表诶group带哎这是一个整体的这样的一个套路啊major ID对吧。哎,那么我这个是没有问题的,那男生的个数和女生的个数分别怎么求呢?
08:04
那么我们可以看一下我们的原始的数据啊,那在这个数据里边的话呢,来我们去看一下。那么这个意思是说我们可以怎么样呢?比方说我们把这个就是我们这个一号专业,哎,一号专业呢,我们现在呢,放到一个组里边。那么我一号专业的话呢,我要求男生的个数,男生的个数,那肯定性别为男,求个数是不是用抗的星号呀,但是如果说我光写select count星号能不能行呢?那我们在这试一下哈,那就是哎这个地方select count星号,Count星号,然后再去from,哎,那么我们的表叫做student表。哎,如果我这样写,然后where sex等于男对吧?哎,那我们看这样写能不能行啊,现在呢,我们查询一下哈,我们把这个鼠标弄一下好,那么现在呢,我们再去试,哎,这个女生其实也是一样的是吧,那么我们的这个女生呢,我在这进行一个换行。
09:07
然后女生的话呢,我们这样来去写,这就是Y23等于女对吧,好,那么现在呢,我们再去试,哎,执行一下。哎,这个效果的话,跟我刚才说的差不多,但这个值是不是有问题呀,但这个男生为九和女生为六,这个是什么呀。对了,这个实际上是不是就是我整个学生表的男生个数,还有整个学生表的女生个数啊,哎,那很显然呢,我们不是想要整个学生表的男生个数或者女生个数,我们想要的是,哎,当前这一组的比方说。哎,我二组或者说二号专业的男生,或者二号专业的女生对吧,那所以说我这个地方怎么样,是不是在需要追加条件,这个条件应该是and,我们的major ID是不是等于你的这个major ID的呀?呃,当然这两个major ID有混淆了,我可以在这儿起一个别名,比方说S,那这就是s.major ID。
10:09
哎,那这个地方也一样吧,And major ID等于是不是s.major ID呀,哎,这个就出来了哈,这是这道题,哎,这个大家。所以说呢,这道题的话呢,你可以用两种方式都可以去实现,那么我们使用它也行哈,啊行吧啊,这就是我们的这道题哈。多两题啊,行,我们再看一下第六题,查询专业和张翠山一样的学生的最低分,那我应该先把张翠山的专业给求出来,那张翠山的专业怎么求呢?第一步啊,那我应该是这样写上,把张翠山的专业编号对不对啊,先去查他select专业编号是major啊第from student where,我们的student name对了吧,等于是不是张翠S呀,这个应该就一个专业吧,肯定的是不是,然后呢,我们再去查询,第二步再去查询是不是最低分呀,Flag的最低分M,此高是此高,哎,错了啊,是此高对吧?好,查询最低分。
11:31
啊,然后再去fromsort表才有最低分,哎,那这怎么写的呀?这好像一步不行,因为你这块只是查询一个专业,那我是不是还应该把该专业的那个学生给查出来啊,对吧?这个题出的有点歧义啊,那我应该是怎么样,还得再来一步,是不是有点歧义啊?啊,我们这应该查询一下查询编号等于一的所有学生编号,对吧?先把学生编号找到,有的学生编号是不是在result里边才能根据编号再去查成绩呀?所以说这一步应该是select student number from student表啊,Where,我们的major ID等于一啊,对吧?啊,看来不是这么做的,你们是吗?嗯。
12:32
好,然后我们把它缩进一下啊,是不是一大堆呀,啊,你这是一大堆编号了,那我这个造的表里边在where,我们的student number where student number应该in了吧,嗯,In,嗯,然后把这个去掉哈,哎,再把刚才的给你粘过来啊,它应该是这么做的啊啊哎,所以说呀,你看它这个就是一环套一环的。
13:00
诶到哪到这是吧,嗯,这样弄一下啊,好直行最低分是70分对吧,嗯,不是这么做的,嗯,行,看你们的表情好像很惊讶的样子是吧?嗯,行了,再看一下第七题,查询一下大于九大于60分的这些,那这个的话就是一个连接查询了,这个比较简单,Select我们的姓名student name,密码login power对吧,专业名的话是major name from,它涉及到了是不是两个表呀,一个是他,一个是他,没问题吧,哎,然后呢,我们在from student表起个名s inner join inner Joy major对吧?哦,好像不止俩表啊,因为大于60是不是来自于result呀,啊没,没关系,我们我们。
14:01
先把这两个表连上M2,条件是s.student number等于,呃,这两个是专业是吧?专业的话,那我这就应该是major ID等于M表点major ID对吧?哎,Majord再去join谁呢?Result表R2s.student number等于r.student number做完三个表都有了,然后你再去加where,条件r.score大于60完事吧,啊,我们再去看哈,那这个涉及到了三表连接,我们用的是九九语法啊,你也可以用九二语法来实现,再看第八题,按优箱的位数分组查询每组的学生。
15:01
个数,那个数的话肯定还是count型号啦,然后再from我们的student表邮箱嘛,那肯定是不是在这里边呀,好,Group by length后面再去加email是不是就做完了啊,然后当然这个其实想告诉你group by后面是不是也支持这种函数啊啊我们把这个呢啊也查询一下,看一眼真行出来了吧?啊当这个这个no no说明你没有是本身就是个no啊啊本身就是个no啊,它就是这样行吧,那这个是第八题,再看第九题查询一下学生名,专业名,分数,这个跟第七题基本一样吧,是吧,它也是三表连接,所以说我把这个弄过来就行了啊那这次的话,我要查询的有姓名专业名外加一个。
16:01
分数啊,你看连个筛选条件都没有啊,就做完了啊,有的有的人没有分数对吧?是这个意思吗?啊,你要是没有分数的话,我这应该用一个啥left是吧?啊,那就加上外联嘛,加上外联就行了啊,有没有分数的嘛,咱这里边有是吧,是不是就是闹了呀,对吧?没有分数就是这样啊行,这是第九题,第十题查询哪个专业没有学生,哪个专业没有学生,分别用左联和右联来实现,那首先你看谁是主表专业吧,专业表是主表,那么我们这的话就是select,呃,哪个专业没有学生,我要把专业的编号和专业名字给你查出来,那就是M点,它逗号M点没招name啊,当然可以写M点星对不对?
17:01
嗯,然后再逗号加上我们student里边的呃,ID吧,也就是number,行,然后再去from,我要用左联,那这就是major m是不是left呀,照我们的student s啊,条件是M点,是不是还是那个连接条件呀?哎,这个是不变的啊,没准ID没问题吧,在最后加YS点。S点是不是随便一个列,但是最好是主键列is no好做完这个是用左链来实现的,我们看有没有啊,啊没有是吧,就是说明所有的专业都有学生,是这样的吗?我们可以看一下数据,是不是现在三个专业呀,我们再去看一下我们的学生表,123是不是都用上了啊,说明没问题啊行,如果说要是用右联,我们仅仅需要把left换成right,哎,这样我重新来一份吧,哎,这个代表的是组啊好,我们再来一个用用,然后把这个粘过来,然后把left换成right,然后还有谁呢?然后表是不是颠倒呀?啊,然后这个放这,然后把这个student s放这,对吧,那这个效果是一样的啊,都没有。
18:25
可以了吧,最后一个第11题查询没有成绩的学生人数还是挺麻烦的是吧?没有成绩的学生人数,我是不是应该先把没有成绩的学生给查出来,要查没有成绩的学生谁是主角,做这种题肯定是外联嘛,外联肯定有个主表啊,是不是谁是主表呀,学生吧,好,那这个学生是不是和成绩进行一个那个外联呀,比方说我有左连,那就是select,哎,这样我这呢,先把这个S里边的那个那个那个星号都查出来可以吧?R里边的话,我把ID查出来,From student s left join result里边的R可以吧?嗯,s.student number等于r.student number啊,好了,然后在where我们R里边的ID is。
19:25
呢行,然后现在我们先看一下这个结果是不是就有了呀,你看ID文章的是这么一堆呀,能能看明白吧,也就到现在为止,这些学生都没有,都没有成绩,那都没有成绩我要干嘛,是不是统计一下一共多少个呀,其实就是在这个结果及基础之上,是不是填这个叫什么,统计一下对不对,统计一下是不是应该用到了谁呀,Count嘛,所以说我这应该怎么写嘞,就直接count行,其实就行,这个没是不是都没必要呀,嗯,都没必要,好啊,因为这个count行就是代表你后面的这个结果的总行数对不对,而这个结果不就是它吗?总行数就是我们要查的个数,现在去执行九个。
20:13
这道题完事了哈,行吧,我们把这个填一下啊填。
我来说两句