00:00
来各位,咱们继续再往下说了之后呢,我们接下来想说什么呢?诶看看having。找出每个工作岗位的最高薪资要求,显示薪资大于。找出什么,每个部门的什么。就每个部门吧,别岗位了啊,找出每个部门的什么最高薪资要求显示薪资大于两千五的。数据。写我告诉大家一个小窍门啊,写SQL语句的时候,您别老想着一下写出来,一句一句读,读一句,你解决解决一步。你要通读全下来,我告诉你根本就写不出来,我也不可能写出来,我一般情况下写词后语都是拆的啊,都是拆的,我看你这句话表示的意思是什么意思,然后把你这句话我拆成。
01:10
好几块,然后我一块一块写,行,各位先来看,找出每个部门最高薪资,你会吗?找出每个部门,每个部门最高薪资,按照部门编号分组,求最大值。找出每个部门最高薪资吗?每个部门最高薪资的话,就是max salary,这个是不是部门编号,按照部门编号分组,是不是求每个部门编号的最大值,部门编号这个薪资的最高值是吧?一共是十部门,20部分和30部门,每个部门的最高薪资我们都能找出来,这个不是工作岗位,这个不是工作岗位,各位啊,这个是每个部门的最高薪资要求显示薪资大于两千五的,薪资大于两千九的吧,也就是说我们要找这波数据里边怎么着,薪资大于多少。
02:18
大于两千九的是吧。那怎么写呀?好,第一步我先写上,是找出每个部门的最高薪资,我们已经找到了,这是第一步啊,那第二步要求显示薪资大于两千九的。那第二步找出什么薪资大于什么两千九的,好,各位,我问大家一个问题。怎么写这条语句?加一个过滤行不行,什么max。
03:13
再过分完组之后再过滤嘛,这不分完组了嘛,是不是在这里过滤啊,好过滤啊,把它拿过来。行不行?行吧,好,但是这种方式我问大家一个问题,是不是效率非常低?你好好想想。找出每个部门的最高薪资,现在每个部门十部门,20部门和30部门,每个部门的最高薪资是不是有了?找出薪资大于两千九的,我大于两千九我加一个having。
04:04
为啥?为啥效率低?因为啊,你好不容易干啥呀,分组。对吧,好不容易求出最大值,最后你是不是不要他了?那你倒不如早点不要他,提前就不要它外耳条件给它过滤掉行不行?所以这条语句的最佳写法不是这样写,不要用having,不要用having这一块我们建议使用wi进行过滤,因为where呢,它可以直接。过滤。Wi是不是比要先执行,先过滤掉剩下的数据是不是再分组,参加分组的数据是不是就会变少,效率是不是就会提高?
05:05
对吧,所以这种方案我问大家是不是比。上面的这种方案要好一些啊。对吧,哎,还是这个结果各位啊,好了,我问大家一个问题,是不是有的时候wire搞不定。有没有这种情况?Where搞不定的东西我们也就只能用谁了,嗨了对不对?那接下来这个先写上啊,这个效率什么较高,建议能够使用外耳过滤的尽量使用什么外耳。好,我们来看看搞不定的各位啊,我们来看一个where搞不定的东西,找出每个部门的平均薪资。
06:00
不是最高了,找出每个部门的平均薪资要求,显示薪资大于。2000的。第一步是什么?找出每个部门的平均薪资,是不是我们现在要做的呀?怎么写个按照谁按照部门编号分组,求每个部门的平均薪资吧,好走。大家看十部门,20部分和30部分,每个部分的平均薪资是不是都有啦,结果人家要的不是这个,人家要的是要求显示薪资大于2000的数据,第二步要求显示薪资大于2000的,也就是说以上的这个数据要求薪资于2000的是这意思吗?好,那这条语句我们是不是可以用having啊?
07:13
是不是?好,各位,大家看是不是找出来了。听懂了吗?要求显示薪资大于2000的就在加average大于2000,我问大家一个问题,现在你还能用,你试来A,我们刚后面不允许用average分组函数,有同学就开始纳闷,老师,不对呀,上一个例子没用吗?你看我用没用?
08:03
就你告诉我为什么这个能。用外耳过滤。下面这个。显示的这个数据是分完组之后算出来的。对吧,上面这个不是分完组之后算出来的。这个不是分完组之后算出来的,各位。这不是分分组算出来一个数据啊,这个是工资啊。这个公司的员工的工资,每个员工的工资都是固定的呀。
09:03
那你与其在这个分完组max过滤,你倒不如说上来就给它把大于两千九的数据给它筛出来。对吧,你得好好想想啊,好好想想,就这两个语句是不一样的啊。这个是不是就错误了。错误。诶。错误。Where后面不能用什么?不能使用分组函数?Where后边用不了分组函数。
10:00
所以这种情况就只能用什么了,Hi并过滤。好了,Group backing讲完了,各位。就是这个group by和having讲完了啊,Group是按照某一个字段或者是某一些字段进行分组,Having是对你分完组之后的数据不满意的话可以过滤,但如果您能在where后边过滤的话,尽可能在where后边先把数据怎么着过滤掉,然后再分组,这样效率高。如果是实在where搞不定,那你只能放到哪啊后边过滤了。听懂了吗?不要。不要随便的启用啊,记住了,是只有出现的时候才能用,没有是没有办法使用的,他们两个是搭hi的过滤,只是对分完组之后的数据不满意,可再次过滤,但能在wi中过滤的一定要在wi中先过滤掉,这样效率要高一些啊,这就是我们说的grow by和having。那今天呢,我们再讲一个点,我们就不说了,各位啊,今天的内容剩下的时间让你们敲敲程序啊。
我来说两句