SQL聚集函数

来源:互联网 发布:java求质数 编辑:程序博客网 时间:2024/06/10 02:15

0. 简介

聚集函数是以值的一个集合(集或多重集)为输入、返回单个值的函数。
SQL提供了五个固有聚集函数:

  • 平均值:avg
  • 最小值:min
  • 最大值:max
  • 总和:sum
  • 计数:count

1. 基本聚集

e.g.

select avg(salary)from instructorwhere dept_name = "Computer"

2. 分组聚集

在SQL中可以使用group by子句将聚集函数作用到一组元组集上。group by子句中给出的一个或多个属性是用来构建分组的。在group by子句中的所有属性取值相同的元组将被分在同一组中。
e.g.

select dept_name, avg(salary) as avg_salaryfrom instructorgroup by dept_name;

当SQL查询时使用分组时,一个很重要的事情是需要保证出现在select语句中但没有被聚集的属性只能是出现在group by子句中的那些属性。

3. having子句

有时候,对分组限定条件比对元组限定条件更有用,having子句中的谓词在形成分组后才起作用。
e.g.

select dept_name, avg(salary) as avg_salaryfrom instructorgroup by dept_namehaving avg(salary) > 420000;

4. Attention: 操作序列

包含聚集、group by或having 子句的查询含义可通过下列的操作序列来定义:
1. 与不带聚集的查询情况类似,最先根据from子句来计算出一个关系
2. 如果出现了where子句,where子句中的谓词将应用到from子句的结果关系上
3. 如果出现了group by子句,满足where谓词的元组通过group by 子句形成分组。如果没有group by子句,满足where谓词的整个元组被当成一个分组
4. 如果出现了having子句,它将应用到每个分组上;不满足having子句谓词的分组将被抛弃
5. select子句利用剩下的分组产生出查询结果中的元组,即在每个分组上应用聚集函数来得到单个结果元组

0 0
原创粉丝点击