一、Aggregate Functions (聚集函数)
1.定义:聚合函数接受一组(集合或多重集合)值作为输入,并返回单个值。
2.种类
函数 | 功能 |
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
二、基本的聚合
1.语法:select 聚合函数(字段列表) from 表名;
例1:找出计算机科学系教师的平均工资。
2.如果想消除重复项,可以在聚合表达式中使用distinct关键字。
例2:找出在2010年春季学期教授某门课程的教师总数。
3.我们经常使用聚合函数count来计算关系中元组的数量。这个函数在SQL中的表示法是count(*)。SQL不允许使用distinct with count(*)。对max和min使用distinct是合法的,即使结果不会改变。
例3:select count (*) from course;
4.使用Null值进行聚合
除了count(*)外所有的聚集函数都忽略输入集合中的空值
例4:如果集合中只有null值怎么办?
- count返回0
-所有其他聚合返回null
三、分组查询
1.语法
Select 字段列表 from 表名 where条件 group by 分组字段名 having分组后的过滤条件;
2.where和having的区别
(1)执行时机不同:where是分组之前进行过滤,不满足where条件不参与分组;having是分组后对结果进行过滤。
(2)判断条件不同:where不能对聚合函数进行判断,而having可以。
3.注意
(1)执行顺序:where >聚合函数> having
(2)分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
例5:
四、基于分组的聚合
1.不仅将聚合函数应用于单个元组集合,还可以应用于一组元组集合。
例6:找出每个部门的平均工资。
注意:没有讲师的部门将不会出现在结果中
2.出现在select子句中但没有被聚集的属性必须出现在group by子句中
3.Having语句
用在having中的谓词在形成分组后才起作用,而where子句中的谓词在分组前起作用
例7:找出平均工资大于42000的所有部门的名称和平均工资。
例8:对于2009年开设的每个课程部分,如果该部分至少有2名学生,请计算该部分所有注册学生的平均总学分(tot_cred)。
4.sql语句顺序
标签:count,聚合,函数,分组,SQL,06,数据库系统,where,having From: https://blog.csdn.net/m0_73376761/article/details/143091464