00:00
好了,那接下来我们一块来看看分组函数。分组函数。是用来干什么的,计数的。啊,是用来干什么的,求和的。Avg是来干什么的?平均值max最大值M最小值。分组函数都是对一组数据进行操作的,记住啊,记住,所有的分组函数都是对叫什么某一组数据进行操作的。
01:07
那。我们来举个例子。导出。员工的工资总和。分组函数各位啊,这是过了啊,Order by完事了,往后分组函数。嗯,找出工资总和。From什么?是不是这个就够了。也就是他对哪个字段求和。对这个字段求和吧。找出工资总和呀,那找出最高工资,找出最低工资,找出平均工资,对,找出什么呢?这个总人数最高工资无非就是max salary呗,最低工资就是Mary呗,平均工资就是average呗,对吧?找出总人数无非就是。
02:41
这。总人数按说应该叫count name这个字段。或者抗清都行啊,来,那我们就写一下吧,工资总和是他select。
03:04
这个max salary。最高5000,最低的800呀。最低800啊,是不是最高5000,最低800平均是多少钱,平均工资我看他们当时是多少钱。两千零七十三两千两千美元。一万五六人民币是吧。好,那还有什么呢么?对吧,哎,各位我想说一下啊,分组函数还有另外一个名字,各位分组函数一共几个,一共五个,各位只有这五个没有别的啊对,分组函数一共五个。
04:11
都是对什么某一组数据进行操作的分组函数,还有另一个名字。叫多行处理函数,具体多少?多行处理函数是什么东西啊?多行处理函数指的是输入多行,输出一行。就是多行处理函数的特点是什么,输入什么?多行最终输出的结果是什么一行?这是啥意思,就是说你这个薪资这么多,14条,我要用一个sum函数,就是说咔咔全全部加起来,最后得出一个结果。
05:11
也就是14行输进去,最后输出一个结果,这叫多行处理函数,明白吧。多行处理函数啊。就一次处理多行记录得出一个结果叫多行,但是呢,它也叫分组函数,一共就是五个个位。鲁。好。这是表面的一个用法,我们讲的稍微深入一点啊,来我们一块看一下啊。有一个非常重要的特点是分组画出自动忽略空。
06:00
有一个特点是什么呀,分组函数自动忽略空各位。自动互联纳。Select count。CM。哎,你可以看到他统计出的数量是几个呀,四个。他剩下的没有统计进去啊,他没有统计谁。就是今天为这个这个这个这些这些都没有统计。对。分组函数有个特点是自动忽略那。
07:10
啊,这个事儿要注意,我觉得在讲这个东西之前啊,我们还得补充一个东西啊。上面所讲的这叫分组函数,被称为什么多行处理函数,有没有单行处理函数呢?单行处理函数是什么?什么是单行处理函数啊,输入一行输出一行,就这意思,就是一行一行处理,他不可能综合说很多行来了啊,我求一个结果出来,不是啊,你来了14行,最后我运算完的结果还是14行,你过来100行,我最后运算完的结果还是100行,就是我的这个函数只是针对于您每一行的数据进行处理,这叫单行处理函数。
08:06
好。我们来找一个。计算每个员工的年薪。计算每个员工的年薪。怎么算?不对吧,应该是加上补助乘以12吧。对不对。不是,咱们员工的补助不算工资里边的钱吗?也算呀,补助津贴吗?你每个月的工资加上你的补助乘以12个月不就是年薪吗?我们之前没这么做,是直接用的工资乘以12,但是我们现在算细点吗?计算每个员工的年薪怎么算?就是我们的工资加上津贴乘以12不就是年薪吗?但是大家看补助有没有可能为空。
09:14
有空参加的数学运算,我们会发现最后的结果是空。史密斯,人家工资无非就是低点,你至于吧,年薪是空是不是?这史密斯的年薪怎么就空了呢?因为史密斯的工资是多少,800,补助是那800加,记住啊,在数据库当中有一个死的规定,这个规定就是只要数学表达式当中有nu出现,不管您这个式子怎么列,最后的结果都是。你需要记住这个结果。
10:01
就这个事,你必须得记住。就我再说一次啊,就是数据库,不管是买circle DB two还是article,还是别的数据库,总之您只要是有一个nu进行了一个运算,那最后的这个结果他一定是闹没有值,没有值啊,数据库的一个规定你记住就行了。好这块啊,我。写到这儿啊,所有数据库都是这样规定的,只要有那参与的运算结果一定是捺,没有别的值,你看到这个位置是捺。对吧,好了,那么。怎么做呢?怎么办呀,计算每个员工的年薪。诶衣服呢,空值处理函数,有这样一个空值处理函数啊,空处理函数。
11:09
它的用法是什么?它的用法是if nu,括号里边跟上第一个参数,第二个参数,第一个参数是什么呢?可能为什么nu。数据逗号。被当作什么处理?呢,我们用一下if函数,If函数括起来,然后呢,括号后面呢,直接写上逗号零什么意思?如果这个津贴是空,把它当做零来看待。所以执行结束之后,大家看这是不是就是零啊。
12:05
好,这种函数跟我们上面所讲的这些函数相比来说就不一样了,因为我的数据是14条记录,最后运算完还是14条记录,我们叫做单行处理函数,对吧?对不对,哎,If now是不是单行处理函数属于啊,属于单行处理函数各位啊。If cm,逗号零,S from p这条语句查的就是我们刚才的这个结果。就查这个内CM吗?是吧,如果他没弄嗯。
13:04
那如果我们学了if,那函数了,各位啊,这个怎么办?这条语句该怎么写?我们使用一下if函数,改一下这个怎么改,If括起来逗号零。工资加上它,如果这个为空当做什么计算零这样的话,我们是不是查询出的这个数据就不是刚才那个情况了,所以说我想在这里说的是我趁这个啊,我给大家讲了一个小函数,这个函数啊叫if函数,这个if那函数的作用是什么呢?它的作用是。可以对空进行预处理,如果为空,我们把空当做什么来处理,可以用if,那这个函数,但是这个函数您一定要记住啊,跟这个的区别在于这是多行,这个是单行,有的老师不对呀,这不是多行吗?
14:07
这么多行不多行吗?它是先处理这一行,这个函数是不是结束了再处理这一行,这个函数是不是又结束了再处理这一行,也就是这个函数,实际上并不是说这两条记录综合起来处理,是说这个函数它是处理完这条记录之后,再接着处理下一条,再处理下一条,它不像这个sum啊,Sum这个函数它是求和上来,他要做的事情是这个加它加它加加加加加加全加,最后得出一一个结果,这叫多行处理函数,听懂了吗?多行处理函数的这个这个表面现象是什么?多行处理函数就是最初是多行运算完变成几行了一行,这叫多行处理函数,听懂了吗?单行处理函数特点是你进去多少行,出来还是多少行进去14行,出来结果还是14行记录,这叫单行处理函数了解好if纳函数啊,If好,有的老师你怎么讲着讲着突然之间跑到这了呢?
15:04
诶,注意看了,我们来看一看。它分组函数是否真的忽略空?我这里不是说了分组函数自动互联到吗?这个count出来统计出来几个,四个,好,各位看好了,Select sum com from。什么意思?算员工的津贴总和,津贴里边有没有none啊,None参与运算的话,是不是最后结果只能是啊,最后结果它不是啊不是,那你说这个函数有没有忽略呢。不过上一个例子我刚跟你讲过,我说哎,你呀,重点要记住,所有数据库都是这样规定的,只要有参与的运算,一定是现在这个对谁求和,对求和里边有没有有我求和,算完之后结果不是,这说明他忽略没忽忽。
16:29
就还是忽略了啊各位,我想说的是这个事,就是说这一块的select sum括号CRM,然后from e算出的这个结果。就是他。您根本就不需要画蛇添足,有老师画什么添添什么足是吧?哎,注意看了啊,有的同学在后面加一个where条件,有的同学就写成where条件是cm is not now。
17:02
这个条件需不需要加?别走神儿,同学啊,走神儿了啊。Com,我问大家个问题,这么写这个语句执行结果没问题吧,肯定没问题,但是您这个条件加上去等于白加,为啥?因为我这个sum函数是自动忽略none的,您根本就不用在这加where条件给我筛选,因为我sum根本没有把这个nu看在眼里啊,这个nu根本就不存在忽略了,所有分组函数都是自动忽略什么的nu。不需要。额外添加这个外置条件啊,不需要额外添加这个过滤条件,Sum函数自动忽略,那休息一下。
我来说两句