SQL聚集函数

本文深入介绍了SQL中的聚集函数,包括avg、min、max、sum和count的用法。重点讲解了如何计算平均工资、统计元组数量以及使用groupby和having子句进行分组过滤。同时,讨论了聚集函数对空值的处理规则,以及在空集情况下的返回值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

聚集函数

输入值的一个集合,返回单个值的函数。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(*)仍然会对空值进行计数),其他所有聚集运算在输入为空集的情况下返回一个空值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值