聚合函数执行一个或多个值的计算并返回单个值。 聚合函数通常与[SELECT]语句的[GROUP BY]子句和[HAVING]子句一起使用。
下表显示了SQL Server中的聚合函数:
| 编号 | 聚合函数 | 描述 |
| --- | --- | --- |
| 1 | AVG()函数 "AVG()函数" | `AVG()`函数用于计算集合中非`NULL`值的平均值。 |
| 2 | CHECKSUM\_AGG()函数] | `CHECKSUM_AGG()`函数根据一组行计算校验和值。 |
| 3 | COUNT()函数 | `COUNT()`函数返回集合中的行数,包括具有`NULL`值的行。 |
| 4 | COUNT\_BIG()函数 | `COUNT_BIG()`函数返回组中的行数(具有`BIGINT`数据类型),包括具有`NULL`值的行。 |
| 5 | [MAX()函数 | `MAX()`函数返回集合中非`NULL`值中的最大值。 |
| 6 | MIN()函数 | `MIN()`函数返回集合中非`NULL`值中的最小值。 |
| 7 | STDEV()函数 | `STDEV()`函数返回所提供表达式的所有值的统计标准偏差,但基于数据总体的样本。 |
| 8 | STDEVP()函数 | `STDEVP()`函数还返回所提供表达式的所有值的标准偏差,但基于整个数据填充。 |
| 9 | SUM()函数 | `SUM()`函数返回集合中所有非`NULL`值的总和。 |
| 10 | VAR()函数 | `VAR()`函数根据指定总体的样本,返回表达式中值的统计方差。 |
| 11 | VARP()函数 | `VARP()`函数返回表达式中值的统计方差,但是基于整个数据总体。 |
#### SQL Server聚合函数语法
以下是聚合函数的语法:
~~~sql
aggregate_function_name(DISTINCT | ALL expression)
~~~
在这个语法中;
* 首先,指定要使用的聚合函数的名称,例如:`AVG`,`SUM`和`MAX`。
* 其次,如果只想在计算中考虑不同的值,则使用`DISTINCT`;如果在计算中考虑所有值,则使用`ALL`。 默认情况下,如果未指定任何修饰符,则使用`ALL`。
* 第三,`expression`可以是表的列,也可以是由具有算术运算符的多个列组成的表达式。
#### SQL Server聚合函数示例
下面将使用[示例数据库](https://www.yiibai.com/sqlserver/sql-server-sample-database.html "示例数据库")中的`products`表进行演示。
![products表结构](https://www.yiibai.com/uploads/article/2019/02/27/112340_36305.png "products表结构")
**1\. AVG()函数示例**
以下语句使用`AVG()`函数返回`products`表中所有产品的平均价格:
~~~sql
SELECT
AVG(list_price) avg_product_price
FROM
production.products;
~~~
执行上面查询语句,得到以下结果:
![查询平均价格](https://www.yiibai.com/uploads/article/2019/02/27/112540_53976.png "查询平均价格")
上图中平均价格有`6`位小数。一般需要将结果舍入到两位小数的数字。 为此,可以使用`ROUND`和`CAST`函数,如以下查询中所示:
~~~sql
SELECT
CAST(ROUND(AVG(list_price),2) AS DEC(10,2))
avg_product_price
FROM
production.products;
~~~
执行上面查询语句,得到以下结果:
![查询平均价格](https://www.yiibai.com/uploads/article/2019/02/27/112812_30090.png "查询平均价格")
首先,`ROUND`函数返回舍入的平均价格。 然后`CAST`函数将结果转换为带有两个小数位的十进制数。
**2\. COUNT()函数示例**
以下语句使用`COUNT()`函数返回价格大于`500`的产品数量:
~~~sql
SELECT
COUNT(*) product_count
FROM
production.products
WHERE
list_price > 500;
~~~
执行上面查询语句,得到以下结果:
![产品总数量](https://www.yiibai.com/uploads/article/2019/02/27/113014_42750.png "产品总数量")
在这个例子中:
* 首先,`WHERE`子句获取价格大于`500`的产品。
* 其次,`COUNT`函数返回价格大于`500的`产品数量。
**3\. MAX()函数示例**
以下语句使用`MAX()`函数返回所有产品的最高定价:
~~~sql
SELECT
MAX(list_price) max_list_price
FROM
production.products;
~~~
执行上面查询语句,得到以下结果:
![产品最高价格](https://www.yiibai.com/uploads/article/2019/02/27/113222_83111.png "产品最高价格")
**4\. MIN()函数示例**
同样,以下语句使用`MIN()`函数返回所有产品的最低定价:
~~~sql
SELECT
MIN(list_price) min_list_price
FROM
production.products;
~~~
执行上面查询语句,得到以下结果:
![产品最低价格](https://www.yiibai.com/uploads/article/2019/02/27/113346_15898.png "产品最低价格")
**5\. SUM()函数示例**
为了方便演示`SUM()`函数的使用,下面将使用[示例数据库](https://www.yiibai.com/sqlserver/sql-server-sample-database.html "示例数据库")中的`stocks`表。
![socks表结构](https://www.yiibai.com/uploads/article/2019/02/27/113519_44390.png "stocks表结构")
以下语句使用`SUM()`函数计算所有仓库中产品ID的总库存:
~~~sql
SELECT
product_id,
SUM(quantity) stock_count
FROM
production.stocks
GROUP BY
product_id
ORDER BY
stock_count DESC;
~~~
执行上面查询语句,得到以下结果:
![](https://img.kancloud.cn/8a/c5/8ac52ef39c43a4f918d93f74344e93a2_573x520.png)
以下是该语句的工作原理:
* 首先,`GROUP BY`子句按产品ID将行汇总为组。
* 其次,`SUM()`函数计算每个组的数量总和。
**6\. STDEV()函数示例**
以下语句使用`STDEV()`函数计算所有价格的统计标准差:
~~~sql
SELECT
CAST(ROUND(STDEV(list_price),2) as DEC(10,2)) stdev_list_price
FROM
production.products;
~~~
执行上面查询语句,得到以下结果:
STEEV计算标准方差("STEEV计算标准方差")
- 第一章-测试理论
- 1.1软件测试的概念
- 1.2测试的分类
- 1.3软件测试的流程
- 1.4黑盒测试的方法
- 1.5AxureRP的使用
- 1.6xmind,截图工具的使用
- 1.7测试计划
- 1.8测试用例
- 1.9测试报告
- 2.0 正交表附录
- 第二章-缺陷管理工具
- 2.1缺陷的内容
- 2.2书写规范
- 2.3缺陷的优先级
- 2.4缺陷的生命周期
- 2.5缺陷管理工具简介
- 2.6缺陷管理工具部署及使用
- 2.7软件测试基础面试
- 第三章-数据库
- 3.1 SQL Server简介及安装
- 3.2 SQL Server示例数据库
- 3.3 SQL Server 加载示例
- 3.3 SQL Server 中的数据类型
- 3.4 SQL Server 数据定义语言DDL
- 3.5 SQL Server 修改数据
- 3.6 SQL Server 查询数据
- 3.7 SQL Server 连表
- 3.8 SQL Server 数据分组
- 3.9 SQL Server 子查询
- 3.10.1 SQL Server 集合操作符
- 3.10.2 SQL Server聚合函数
- 3.10.3 SQL Server 日期函数
- 3.10.4 SQL Server 字符串函数
- 第四章-linux
- 第五章-接口测试
- 5.1 postman 接口测试简介
- 5.2 postman 安装
- 5.3 postman 创建请求及发送请求
- 5.4 postman 菜单及设置
- 5.5 postman New菜单功能介绍
- 5.6 postman 常用的断言
- 5.7 请求前脚本
- 5.8 fiddler网络基础及fiddler简介
- 5.9 fiddler原理及使用
- 5.10 fiddler 实例
- 5.11 Ant 介绍
- 5.12 Ant 环境搭建
- 5.13 Jmeter 简介
- 5.14 Jmeter 环境搭建
- 5.15 jmeter 初识
- 5.16 jmeter SOAP/XML-RPC Request
- 5.17 jmeter HTTP请求
- 5.18 jmeter JDBC Request
- 5.19 jmeter元件的作用域与执行顺序
- 5.20 jmeter 定时器
- 5.21 jmeter 断言
- 5.22 jmeter 逻辑控制器
- 5.23 jmeter 常用函数
- 5.24 soapUI概述
- 5.25 SoapUI 断言
- 5.26 soapUI数据源及参数化
- 5.27 SoapUI模拟REST MockService
- 5.28 Jenkins的部署与配置
- 5.29 Jmeter+Ant+Jenkins 搭建
- 5.30 jmeter脚本录制
- 5.31 badboy常见的问题
- 第六章-性能测试
- 6.1 性能测试理论
- 6.2 性能测试及LoadRunner简介
- 第七章-UI自动化
- 第八章-Maven
- 第九章-测试框架
- 第十章-移动测试
- 10.1 移动测试点及测试流程
- 10.2 移动测试分类及特点
- 10.3 ADB命令及Monkey使用
- 10.4 MonkeyRunner使用
- 10.5 appium工作原理及使用
- 10.6 Appium环境搭建(Java版)
- 10.7 Appium常用函数(Java版)
- 10.8 Appium常用函数(Python版)
- 10.9 兼容性测试