SQL聚集函数

聚集函数

输入值的一个集合,返回单个值的函数。SQL提供了五个固有聚集函数

  • 平均值:avg
  • 最小值:min
  • 最大值:max
  • 总和:sum
  • 计数:count
    sum和avg输入必须是数字集

1.基本聚集

例如计算平均数,默认情况下,聚集函数保留重复元组,若删除重复元组需要显式使用select avg(distinct salary)

select avg(salary)
from instructor
where dept_name = 'Comp.Sci'


计算关系中元组个数

select count(*)
from course;

2.分组聚集group by

group by子句用来构造分组,其中所有属性上取值相同的元组被分在一个组中,注意任何没有出现在group by子句中的属性如果出现在select内部的话,它只能出现在聚集函数内部,否则就是错的。

select dept_name,avg(salary) as avg_salary
from instruct
group by dept_name;

3.having子句

having用于对分组限定条件,having子句中的谓词在形成分组后才起作用,因此可以使用聚集函数,如:

select dept_name,avg(salary)
from instructor 
group by dept_name
having avg(salary) > 42000;

任何出现在having子句中,但没有被聚集的属性必须出现在group by子句中,否则查询就被当成是错误的
查询子句的操作顺序:from -> where -> group by -> having -> select

4.对空值和布尔值的聚集

  • 除了count(*)之外所有的聚集函数都忽略输入集合中的空值。

  • 由于空值被忽略,可能会出现空集,规定空集的count运算值为0(除了count(*)仍然会对空值进行计数),其他所有聚集运算在输入为空集的情况下返回一个空值。

上一篇:【牛客网华为机试】HJ105 记负均正II


下一篇:MVC是什么?MVC设计模式是什么请给一个实例?