00:03
我们来看其他函数,比如说我们去查询一个员工的收入,年收入that。然后是ya品number name home s乘以12加后年收入。在这哈。在算术表达式中出现,那得到的结果就是那这个人他没有奖金,导致他年底就没有收入。
01:14
这明显是不合理的,那现在我们来看一下怎么对它进行处理一下。那如果说他。没有奖金,那我们可以把它当成。零来看待啊。那这时候我们就可以使用其他函数,比如说NVL。判断你的common为空吗?如果为空,就用零来替换。这是第一个表达式,然后三了乘以12加。
02:02
We are comment。年收入一。年收入啊。年收入一算不出来,但是他的年收入二,如果它的common是now,我就把它当成零,也就是12乘以三加零,这样它就有年收入了,NVL。注意你这个替代的值和你前面的值。类型必须要一致才行。这会我们查的这个。
03:00
From number等于。7654。查他的1NAME,查他的job,然后对job进行处理,NVL知道如果为钠,我们就给它说是什么呢?哎,没有如果。他的招不是,那这时候对用NV对他处理还没有工作。二代。
04:02
二代。这个人的过程日期也知道。这儿给他提供一个。没有窒息。啥意思啊,刚才我们说了,你这个值和你被替换的值格式必须要一样啊,这是个日期类型的,那你这一定要给他一个日期类型的呀。一。月杠1987。字段和替代的值格式必须要一致才可以NVL。
05:04
然后nv l two。比刚才那个NVL更灵活一点,判断表达式为,那么如果它不为,那就返回表达式一,为呢?就返回表达式二。From Yu。查询它的job name job,然后这是nv l two,它的job为纳吗?如果为纳。这样啊,把主持给判断你的罩子为不为钠,如果不为钠。
06:08
就返回表达式一不为呢,那就是说我们给它返回一个有工作,否则就返回一个没工作。这个人没工夫。这个人有工作,他是经理啊,所以他有工作,那你想一下,如果他有工作,我是不是直接显示他的工作更好啊,就没必要显示这个了,如果他有工作呢?我就直接显示他的工作不就行了吗?干嘛还打印出来有工作没工作呢?
07:01
它的工作是什么呢?Manager判断这个表达式为空吗?如果不为空,直接返回第一个表达式,否则返回第二个表达式n v l to。囊比较两个表达式,如果相同,则返回控制,如果不同,返回第一个表达式。朗逸。然后这是。嗯。蓝衣。
08:09
第一个参数,Length。那这里头两个肯定相等吧,注意在这不就是把函数嵌套了吗?先计算LAS函数,然后把LAS函数的结果交给囊逸夫。Job。这两个肯定相同,如果相同,返回控制,如果不同,返回第一个表达式。
09:00
这个。长度相同吗?相同返回空值这个相长度相同的都是五个,也返回空值这个它的名字和它的职位长度。不相等,不相等就返回第一个表达式返回的是它名字的长度,难。Case实现一个if al的功能。His。C实现EL。嗯。Alas。
10:05
这什么1.job我们看不懂就把它干掉,Job太少了。玩click赞助着。万一内等于史密斯。美化一下。查询他的员工名字,工作S在这哈,实际上是什么呢?Case job。判断你去有点像那种Switch case似的判断你的job吧,等click吗?如果可注意,则返回1.1乘以它的S拉。如果是manager,则返回1.3乘三了,如果是salesman,返回1.4乘三了,否则。
11:06
返回,直接返回它的塞。NKB要加N,注意这个后面是啥。这整个是一个查询字段吧,给这个查询字段起了个别名。史密斯是克利克。所返回的结果,1.1乘以它的三个880。实现一个e al的功能。然后抵扣的。和一和那个case功能一样,只不过语法呢,更简洁。抵扣的一点照吧。
12:19
查询他的员工名字,工作sal,判断他的job job是click吗?我click塞返回塞乘1.01 manager返回塞乘1.3 sman返回1.4,否则直接返回它的S。也是实现1X功能。抵扣。嵌套使用函数,刚才我们嵌套使用了,在这我们也可以去进行嵌代服图差他的job有没有,如果没有就给他提供一个没有工作从里头算。从里最里层开始算,先算F1的,然后把F1的结果当成F2的结果,然后把F2的结果当成F3的结果。
13:08
当乘F3的参数。函数可以嵌套使用,那我们来看主函数。现在我们是把所刚才我们去使用的所属函数。主函数。就是我们前面。提到的多行函数,什么是多行函数来了?Li from ERP Mars在了。什么是多行函数来了,一次性的把多行记录当做参数,输入两函数,得到多行记录对应的单个结果,那我求它的最高工资,我一定要把14个工资都输入给这个函数。
14:15
得到这14条记录对应的单个结果,这就是组函数,也被称为多行函数。那现在我们是把。14个员工。当成一组吧。你给我求14个员工中工资最大的人的工资最大的是谁?我把14个记录当成一组。那现在我看一下换一种情况零八。年龄最大的。我会得到几个结果,一个吧,把你们班的学生按性别分组。给我找出每组最大的。
15:01
按照性别来分组,那男生一组,女生一组,分别找出年男生中年龄最大的,女生中最大的吧,分成几组就会得到几条数据,那现在我们来看这个。如果说我们给他按部门编号来分组。按照部门编号来分组,那你看我这个数据会分成几组?把部门这个员工的工资按部门编号来分组,求每个部门中的最高工资。我们把数据分成了三组,那我们最终就会得到。三条记录吧,你分成几组,最终就会有几个结果组函数,那组函数有什么呢?Avg?求平均值的,求数据总条数的框子,求最大值,最小值求总和的。
16:07
Avg函数求一组的平均值,Sum求总值,这两个只能针对数值性的,我求工资总和,我求平均工资是有意义的,那我求。雇佣日期总和。所有的雇佣日期加起来没意义吧,两个日期型的数据不能相加,我去求它的平均雇佣日期。平均公日期咋求呢?你得把日期加起来之后除以一个,结果日期不能相加,所以这两个只能针对数值型的。LA from羊皮,这是marks s,然后卖avg s some s。
17:11
我把数据。分成了几组?不是四个吗?我是分了一组还是分成四组?不是四组吗?找出你们班中。年龄最大的。年龄最小的。一组一组,我是把你们整个学生当成一组,分别找出里面最大的,最小,我这没有进行分组啊,只不过是我求这个14个值中几个特殊的,最大的,最小的,那这样我们是把它当成了一组。
18:12
最大的工资5000,最小的是800,平均工资工资总和,我在这还没有对他进行分组呢。Avg。Sum只能针对数值。Markx my,然后还有一个count,可以针对任何类型的from杨皮marks name my name,看名字它是怎么分的?
19:22
ABCDEFG后面的是大的。A是最小的。按照字母的顺序,Abcdf GA是最小的,W是最大的,所以正好。马子。二倍在Java里面,我们去用日期类型的时候。
20:03
它有一个基准日期。1970年1月1号。00:00:00,那这个是。1985年的一个时间距相差多少毫秒?这是1987年距它相差的时间多少?他们八七年相差的数值肯定比八五年相差的数值大吧,就认为八七年是大的。最大的是八七年的,最小的是八零年的,就是说它的雇佣日期ma万矿可以针对任何类型的数据。看看。有两种。
21:05
第一方法先。查询数据的总条数外WMP好行,你这个员工表里头一共有多少条记录?14条。第二。看看。是。这种情况下,忽略忽略,忽略。
22:15
Count corner from em。一共有多少个call门?四个。注意,Common不为空的记录有四个呀,也就是说为空的它没有统计在内,不光说是count,忽略控制所有的组函数。所有的组函数都是。忽略空from阳性。我们求它的萨。
23:15
塞了。然后求它的AVG3了。然后求它的count塞,求不是塞,是common。好的好的。总数,Common的总数是2200AVG common是。五灵。550怎么算出来的呢?是用some common除以com com吧,2200除四得5500啊,得550啊,组函数都是忽略控制的。
24:09
那这个萨姆门实际上是用。Sum。除以count。后我们得出来的结果。五零。那现在我们想要去求它的,按人头算。计算它的平均佣金。按人头算,计算他的平均工资,平均佣金。按照人数计算平均。佣金平均奖金奖金我们好理解啊。
25:05
STEM,那咋算呢?Some common除以。看的星啊,我们说按人头计算14个人,按14个人给我计算平均佣金。明白我的意思吗?那我是不是应该是用萨common计算出common的平均总的数除以总的14条?计算结果157。那。我们有,如果说我们要这么计算呢。
26:02
Avg好问呢?你用avg的时候,它忽略空值吧,那有没有办法处理一下呢?你不是忽略空值吗?那我就自己去把空值处理掉啊。这样计算出来的结果不是一样的吗?组函数都是忽略控制的,那我们可以使用这种忽略空值的函数对它进行处理。注意,在这儿又用到了一个嵌套。先计算NVL,然后再去计算avg。Avg sum Mars count。空值的计算使用NV,那现在我们来看对它来使用对分组函数来进行分组。我按照。
27:09
部门来分组。计算它的。我把你们分成。把全体学生按性别来分组,求每个每组中最大的年龄,最小的年龄。按照性别分组,分成几组?两组,那我得到几条记录?分别得到男生中最大的,男生中最小的一条,女生中最大的,女生中最小的。那是四条。两条记录,这两条记录里分别有两个字段。那我们要分组的时候。Grow grow不是组群的意思吗?Grow by slide from。Well grow by order by order,我们用过了。
28:04
Order by我们用过了。那现在我们来看格。分组。对数据进行分组后,使用组函数。拉的阳气。GROEP。按照部门编号来分组,求它的。最高工资。那我们先来看一下,按照部门编号来分组的时候,我们会把它分成一组。两组。三组。
29:00
按照部门编号来分组,求每个部门的最高工资,那我会得到三条,因为我把数据分成了三组。那在用辅函数的时候,有两把尺子。第一。出现在查询列表中的字段。列表中的字段要么出现在组函数中,要么出现在。是句中第一把尺子,第二把尺子也可以只出现在总函数中,那我们看这种情况。
30:00
出现在。G左右快。那现在D鼻涕number不就只出现在格外边吗?两把尺子,就拿这两把尺子量。这个形容词。出现在查询列表中的字段DPD和塞那dpd number没有出现在组函数中吧?它没有出现在左函数中啊。但是它出现在格里头了。这个也是可以的呀。要么出现在查询列表中的字段,要么出现在左函数中,要么出现在格外集中,或者只出现在格外中,就这两把尺子。
31:09
From em。Number。找马子。Seven。拿尺子量一下行不行?嗯。那尺子上面不有两把尺子,拿两把尺子分别量一下,看看这语句行不行?就这两把尺子。行不行?
32:07
点好了吗?行不行?不行。这儿写写反了。不行啊,怎么不行呢?出现在查询列表中的d number job塞,那你的dp number没有出现在组函数中,但是它出现在排列表中了,S没有出现,出现在函数中,这都是可以的,Job呢?看记录了吗?Job出现在查询列表中了,但是它没有出现在左函数中啊,也没有出现在格句中。不符合这两把尺子的规则呀,所以他就不死。
33:01
这不,这尺子就在这儿吗?嗯。这是他的两把尺子。那钩半。不在查询列表中。这是说我们去查avg。这是它只出现在语中。对多组,我们可以对多个字段进行分组。那现在这个语句是不行的,我怎么就让它变形呢?按照多个字段进行。分。你刚才不是说job没有出现在组函数中,也没有出现在格句中吗?那现在我就让job出现在句中。
34:09
这不就可以了吗?也是符合上面这个规则呀。这就是按照多个字段来进行分组。那你看这里头数据有点乱。乱的话,那我们就。按照部门编号来排序。10MANY10CLICK是一组,10MANY是一组,十这个PR什么是一组?20 MY20这个一组,二十二十三十三十这个是一组。按照多个字段来进行分组。也就是这两个字段的组合不能重复,它就当成一组数据。
35:13
来。EP,然后d PT number。求它的平均工资。这个行不行。这一句行不行?拿尺子量吧。就拿尺子量呗,行不行?出现在查询列表中的字段dp number3了。S出现在查阅列表中的可以,但是你的BTD没有出现在groups居中啊,所以也不行。
36:02
就拿那两把尺子去量啊。然后现在我们要去求它的。最大工资。按照部门编号来分组,求他的最大工资。我想把大于等于3000的过滤出来。要对分组以后的数据进行过滤。过滤。大禹。等于3000的记录。这里面我不查出三条记录吗?我想把这两条过滤出来,那过滤的话咋过滤来了。
37:09
外吧,外。马塞大于等于3000。不行。不允许使用分组函数,Y中不能使用分组函数。过滤,对分组以后的数据进行过滤。不能使用where。而是要使用have。
38:02
不能用where。我们应该用heavy。如外,现在对它进行分组,分组之后求它的最大公式,我要过滤heavy ma子塞了大于等于3000。对分组以后的数据要进行过滤。使用having词句。先分组,分组后的数据再过去。我们把第一批订单也加上。
39:03
那我想按照部门的顺序排列。BYD。Slight from group by heavy order by。这是外界。外见可以为空。那你看。把这个人也当成一组了。
40:03
这个人的工资是。不是,就找那个为空的那个2850,它的部门编号是空,那我在按部门编号分组的时候,注意是不是把它也当成了一组数据了。那在这儿哈。你都没部门,你人家家按部门编号来分组的,你跟这儿裹什么乱啊。我先把它剔除掉。From杨,Where ept。Dpt is not。先把部门编号是那的给它踢掉,过滤掉,过滤掉以后的数据。DPT,那按照部门编号来分组,分组以后的数据。
41:09
Heavyway MAS sal大于等于3000 older by BB。那么。求它的dept。那马。Seven。首先用外的数据过滤。过滤。后的数据用。B o by分组,分组后的数据有还在过滤,过滤后的数据用order by。
42:27
排序,它的执行过程就是自上而下执行。你那个部门编号是使为囊那个给,那我们把那个部门编号为囊那个数据让他。处理一下这哈。3850。它肯定是应该在这个里头的吧,我们不是差大于3000的吗?看能不能把它给审出来。
43:06
用这个语句是不是就把那部门编号是那的给它过滤掉了,过滤掉的以后数据再分组。分组后的数据having,再过滤,再过滤以后的数据order by排序,这个执行的顺序就是自上而下执行。Heavy限定分组结果,Heavy。它完整的语法。主函数也可以嵌套。组函数也可以。嵌套,但是在主函数嵌套的时候必须要使用B腐败。
44:02
组函数最多。能嵌套量。Slide from glo byp number,求PT number按照部门编号来分组,求每个部门的最大公式。这数据就讨厌着的,讨厌着干掉它number not啊。把回档的过滤掉,那现在注意这是有三条记录吧,我求这三条记录里面工资最高的。
45:19
求是按照部门编号来分组,求每个部门的最大工资,然后再找出所有部门中工资最高的部门的工资。这就不允许出现这个了。先看这哈。如果我们没有使用这个。这就是返回三条记录,那我可以对这个三条记录再使用组函数。
46:07
这就是组函数嵌套了。如果说在嵌套的时候,你没有使用隔板。没有使用,那是啥意思呢。没有使用口板。那注意你这里头只会返回一条记录吧,你没有使用勾只返回一条记录,对一条记录,你怎么找它最大的。只有对多条记录你才能找到最大的吧,所以说嵌套的时候,你看我们在这哈。他报的错。
47:03
嵌套分组函数没有使用Co,要想嵌套必须使用Co。分组函数。函数。今天我们就先讲到这,好讲讲第一天。
我来说两句