每天学点SQL(006) 聚合函数

本视频约120秒。碎片时间,关注收藏。


聚合函数

SQL 聚合函数计算一组值,并返回单个值。

聚合函数语法

<code>SELECT 列名1,聚合函数(列名2)
FROM 表名
GROUP BY 列名1/<code>

因为聚合函数对一组值进行操作,所以它通常与 GROUP BY 子句一起使用。GROUP BY 子句将结果集划分为值分组,聚合函数为每个分组返回单个值。
常见的聚合函数:AVG()COUNT()MAX()MIN()SUM()

除 COUNT() 函数之外,SQL 聚合函数忽略 NULL 值。

聚合函数介绍

每天学点SQL(006) 聚合函数

聚合函数AVG详解

AVG 函数是一个聚合函数,用于计算集合的平均值。 以下说明了AVG 函数的语法:

AVG([ALL|DISTINCT] expression)

如果使用 ALL 关键字,AVG 函数将获取计算中的所有值。

默认情况下,无论是否指定,AVG 函数都使用 ALL。如果明确指定 DISTINCT 关键字,AVG函数将仅在计算中采用唯一值。

例如,有一组数据集 (1,2,3,3,4) 并将 AVG(ALL) 应用于此集合,AVG 函数将执行以下计算:(1+2+3+3+4)/5 = 2.6

但是,如果指定:AVG(DISTINCT) 将按如下方式处理:(1+2+3+4)/4 = 2.5

聚合函数SUM详解

SUM 函数是一个聚合函数,它返回所有或不同值的总和。需要注意的是,只能将 SUM 函数应用于数字列。以下说明了 SUM 函数的语法。

SUM([ALL|DISTINCT] expression)

ALL 运算符用于将聚合应用于所有值。 SUM 函数默认使用 ALL 运算符。

例如,如果有一组集合值:(1,2,3,3,NULL)。 使用 SUM 函数将返回 9,请注意,SUM函数忽略NULL 值。要计算唯一值的总和,可以使用 DISTINCT 运算符,例如,集合 (1,2,3,3,NULL) 的SUM(DISTINCT) 为 6。

聚合函数COUNT详解

COUNT 函数是一个聚合函数,它返回符合条件行数。以下是 COUNT 函数的语法:

COUNT ([ALL | DISTINCT] expression)

COUNT 函数的结果取决于传递给它的参数。默认情况下,COUNT 函数使用 ALL 关键字,无论是否指定它。 ALL 关键字表示考虑组中的所有项目,包括重复值。

例如,如果有一个数据集合 (1,2,3,3,4,4) 并应用 COUNT 函数,则结果为 6。
如果明确指定 DISTINCT 关键字,则仅考虑唯一的非 NULL 值。 如果将 COUNT 函数应用于数据集 (1,2,3,3,4,4),则 COUNT 函数返回 4。
另一种形式的 COUNT 函数接受星号 (*) 作为参数如下:COUNT(*)


每天学点SQL(006) 聚合函数

拍摄于20200408

聚合函数MAX/MIN详解

MAX() 函数,用于在一组值中查找最大值。 MAX 函数的语法:MAX(expression)。

MAX 函数忽略 NULL 值。与SUMCOUNT和AVG函数不同,DISTINCT 选项不适用于 MAX 函数。

MIN() 函数同理。

聚合函数使用示例

假设表名students包含以下几个字段:

每天学点SQL(006) 聚合函数

其中,各字段定义为:sid为学生ID、name为姓名、gender为性别,age为年龄,province为所在省份,city为所在城市,district为所在区 (NULL表示未上报)。

聚合函数使用:函数AVG()

<code>SELECT AVG(age) AS avg_age FROM students /<code>

该语句计算学生的平均年龄。

每天学点SQL(006) 聚合函数

<code>SELECT name, age FROM students
WHERE age > (SELECT AVG(age) FROM students )/<code>

该语句查询年龄高于学生平均年龄的基本信息。

每天学点SQL(006) 聚合函数

聚合函数使用:函数MAX() / MIN()

<code>SELECT MAX(age) AS max_age FROM students /<code>

该语句计算学生的最大年龄。

每天学点SQL(006) 聚合函数

<code>SELECT MIN(age) AS min_age FROM students /<code>

该语句计算学生的最小年龄。

每天学点SQL(006) 聚合函数

聚合函数使用:函数COUNT() / SUM()

<code>SELECT COUNT(sid) AS s_cnt FROM students /<code>

统计学生人数。

每天学点SQL(006) 聚合函数

<code>SELECT SUM(age) AS age_total FROM students /<code>

SUM(age) 对学生年龄字段求和。

每天学点SQL(006) 聚合函数

碎片时间,关注收藏。

每天学点SQL(006) 聚合函数

拍摄于20200408

往期视频:

每天学点SQL(001) SELECT语句

每天学点SQL(002) DISTINCT语句

每天学点SQL(003) WHERE子句

每天学点SQL(004) AND 或 OR

每天学点SQL(005) ORDER BY语句


分享到:


相關文章: