db2数据库触发器及分组查询
7.1 简介
⽤户需要统计数据的结果的时候,多数会⽤到分组函数及分组查询的⽅式。
7.2 分组函数
分组函数主要应⽤于对于数据进⾏统计查询等相关需求时使⽤。每个函数的具体作⽤如下:
AVG( [ { DISTINCT | ALL}] ) 求平均值,ALL表⽰对所有求平均值,DISTINCT 只对不
例7.1
MAX( [ { DISTINCT | ALL}] ) 求最⼤值,ALL表⽰对所有求最⼤值,DISTINCT 只对不
例7.2
MIN( [ { DISTINCT | ALL}] ) 求最⼩值,ALL表⽰对所有求最⼩值,DISTINCT 只对不
例7.3
例7.4
例7.5
7.3 分组查询
7.3.1 GROUP BY ⼦句
通常来说,组函数都与GROUP BY ⼦句⼀起使⽤。GROUP BY就是指定按照什么列进⾏分组,这些
列中数据相同的记录为⼀组,再按照分组后的结果进⾏运算。实际应⽤中,⼀般查询各科⽬平均成绩的SQL很常见。例如: 查询各科⽬成绩的平均分。这个时候就要考虑怎么分组。因为我们查询的是各科成绩的平均分,那么分组就应该考虑按照不同课程号
groupby分组例7.6
注意:
通过上例可以看出对于实际的检索结果的数据件数实际是和数据所分组的数量来的。不论怎么分,有⼏个组,就有⼏条数据。
对于分组查询检索出来的列,只有两种情况。⼀,使⽤了分组函数。⼆,必须是分组的
例7.7
7.3.2 HAVING ⼦句
根据例7.7我们看到如何查询各科成绩的平均分。当进⼀步需求的时候,⽐如想查询平
例7.8
注意: HAVING⼦句实际上是WHERE⼦句的补充,在HAVING中不仅仅可以接分组函数的条件也可以接普通条件。但是接普通条件时,对查询效率的影响很⼤,所以不允许。
7.4 总结
1,对于AVG,SUM函数只⽤于数字字段。
2,COUNT,MAX,MIN函数可⽤于任何数据类型。
3,AVG,SUM,MAX,MIN函数全部忽略NULL值。
COUNT(*)计算包含NULL值的记录。除⾮使⽤NVL函数进⾏协助。
4,GROUP BY ⼦句⽤来对表数据进⾏分组。⽽且检索⼦句包含⼀个单独的字段名称和⼀个组函数,字段名称还必须包括在GROUP BY⼦句中。
5,HAVING⼦句⽤来限制组函数中的组(与WHERE的功能类似)。
10.4.2 触发器的实例
为了演⽰触发器的功能,需要创建⼀张表,结构如下:
例10.12
例10.13
追加的触发器实例: 学⽣成绩更新之后,往履历表插⼊⼀条数据
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论