00:01
好了,同学们,那咱们开始上课啊,我们先来看一看这个,今天下午我们主要看一下这个作业题啊,我们来看这个题目好吧。34道作业题啊,我在这儿呢,建了一个文件啊,建了一个单独的文件,我们去看看这34道作业题好吧。来看一下啊,首先第一个取得每个部门最高薪水的人员名称。来。取得每个部门最高薪水的人员名称。这个怎么做呀?就是大家都做了是吧,那做了那我就直接说了啊,来取得每个部门最高薪水能拿到吧。取得每个部门最高薪水。应该是按照什么呀?部门编号分组求最大值啊,按照部门编号分组,找出每一组最大值。
01:03
每组最大值。是吧,取得每个部门最高薪水嘛,按照部门编号分组,找出每一组的最大值。来,我们先把这个打开啊,我们这样先登上去买circle-my circle。杠u root-P参数123456。我们先把这个数据库关掉,不要了啊。Drop database BJ node,然后呢,Create database BJ power node啊,Use一下,把数据恢复一下啊,我们把这个叫做。D盘下的这个COS03买circle下面的这个b power not.circle文件我们拿过来啊,放到这里,然后呢,走一个好了,我们数据重新还原了,各位啊,还原了现在这个数据库里边啊,只有三张表。只有三张表啊,DP和salary grade,全新的。那么现在呢?我们要找出什么呢?每个部门的最高薪水,那么我们来找一找select,每个部门部门编号有吧,Max salary是不是最高薪水啊?
02:08
是不是from EP group by,按照什么部分编号分组求最大值,这样的话,十部门、20分和30部门是不是都已经找出来它的最高薪水了?第一步嘛,取得每个部门最高薪水,十部门,20部门和30部门的最高薪水都能拿到,只是按照部门编号分组嘛,求每一个部门的一个最大值嘛,是不是他要求找到是什么人员名称。就是说十部门5000的是谁,明白吗?就是20部门3000的是谁,30部门两千八百五的是谁。那这个有可能有两个人,你比如说十部分5000的可能有两个人,20部分3000的可能有两个人,对吧,30部分两千八百五的可能有十个人,那都是有可能的,所以说我们现在找出这个部门是这么多的人名,明白什么意思吧,这个部门下钱是这么多的那个人名。所以这个时候呢,应该是把这个查询结果当做一张临时表吧,是不是,哎,第二步将什么呀,将以上的查询结果当做一张什么呀,临时表T。
03:10
是不是,哎T和谁呀,和EP点连接。条件是啥呀?条件是T你这张表,T你这张表的部门编号得和我这个E表里面的部门编号相等。And,并且说你T表里边什么东西啊,哎,你的T表当中的这个max salary这个那要等于什么呀,E的salary啊,这就是我们的条件。就说你这个部门下钱这么多的那个人叫啥。你员工表嘛,得和这张表进行表连接嘛,对不对,那员工表和这张表进行表连接,那员工表的这个部门编号得和你这个部门编号相同啊,你员工表的工资得和你这个工资相同啊。对吧?哎,那么这个时候我们是不是可以可以找出人名啊来select你要找的是什么呀,找的是一点什么呀,E name呗,对不对,T点星就行了,你T表里边不都都查出来吗。
04:07
是不是啊,一点星。啊,那么接下来呢,From哪张表呢?FROM2张表呗,一张表呢,叫什么呀?叫E呗join谁啊,De呗on条件是什么呀?我们E的对吧。招招招引他干啥?Join t是不是哎,E表和T表进行表连接啊,条件是谁,是这个。拿过来。就行了,那这个T表是谁呀?T表不就是这个结果吗?这个结果不就是这个词语句吗?拿过来,把它放到这儿不就行了吗?是不是这样,E表和T表就表连接嘛,连接条件是E的部分编号。E这张表的部门编号得和你这张这个这个SQL语句查询结果的这个T表它的部门编号相同,并且和你T表里边这个最高薪资得出来呢,和你这个E表的这个最高薪资是一样的。
05:00
对吧,哎,T的部分编号等于E的部分编号,并且T的max等于E的salary,部门编号相同,并且说工资一样,就部分编号是十,部门工资是5000的是谁。啊,来,找出来。大家看这样的话就查出。对吧,啊。取得每个部门最高薪水的人员名称吗?每个部门?对不对,哎,最高薪水的人员名称十部门5000的就是king吗?对不对,20部门3000的,20部门3000的有两个人,你看和福特好,这是第一题啊。
我来说两句