SQL 必知必会·笔记<7>汇总数据——使用聚合函数

简介:

有时候我们需要对表中的数据进行汇总,而不需要数据本身,为了方便这些类型的检索,SQL给出了5个聚合函数,SQL聚合函数在各主要的SQL实现中得到了相当一致的支持。如下:

 

1.1 AVG()函数

AVG()通过对表中行数计数并计算其列值之和,求得该列的平均值

//AVG()示例:
SELECT AVG(prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';

 注意:只用于单个列

AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参 数给出。为了获得多个列的平均值,必须使用多个AVG()函数。

 说明:NULL 值

AVG()函数忽略列值为NULL 的行。

 

1.2 COUNT()函数

COUNT()可以确定表中行的数目或符合特定条件的行的数目。

COUNT()函数的两种使用方式

  • 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
  • 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL 值。
//示例
SELECT COUNT(*) AS num_cust
FROM Customers;

说明:NULL 值

如果指定列名,则COUNT()函数会忽略指定列的值为空的行,但如果 COUNT()函数中用的是星号(*),则不忽略。

 

1.3 MAX()函数

MAX()返回指定列中的最大值。MAX()要求指定列名

//示例
SELECT MAX(prod_price) AS max_price
FROM Products;

 

提示:对非数值数据使用MAX()和MIN()

虽然MAX()一般用来找出最大的数值或日期值,但许多(并非所有) DBMS 允许将它用来返回任意列中的最大值,包括返回文本列中的最 大值。在用于文本数据时,MAX()返回按该列排序后的最后一行。

说明:NULL 值

MAX()和Min()函数忽略列值为NULL 的行。

 

1.4 MIN()函数

MIN()的功能正好与MAX()功能相反,它返回指定列的最小值

//示例
SELECT MIN(prod_price) AS min_price
FROM Products;

 

1.5 SUM()函数

SUM()用来返回指定列值的和(总计)

SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;

提示:在多个列上进行计算

如本例所示,利用标准的算术操作符,所有聚集函数都可用来执行多 个列上的计算。

说明:NULL 值

SUM()函数忽略列值为NULL 的行。

 

1.6 聚合不同的值

对于上面的五个函数都可以如下使用:

  • 对所有行执行计算,指定ALL 参数或不指定参数(因为ALL 是默认行为)。
  • 只包含不同的值,指定DISTINCT 参数。

提示:ALL 为默认

ALL 参数不需要指定,因为它是默认行为。如果不指定DISTINCT,则 假定为ALL。

DISTINCT示例

SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';

 

注意:DISTINCT 不能用于COUNT(*)

如果指定列名,则DISTINCT 只能用于COUNT()。DISTINCT 不能用 于COUNT(*)。类似地,DISTINCT 必须使用列名,不能用于计算或表 达式。

本文转自gyzhao博客园博客,原文链接:http://www.cnblogs.com/IPrograming/p/3278750.html ,如需转载请自行联系原作者
相关文章
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
简介:本文整理自阿里云高级技术专家李麟在Flink Forward Asia 2025新加坡站的分享,介绍了Flink 2.1 SQL在实时数据处理与AI融合方面的关键进展,包括AI函数集成、Join优化及未来发展方向,助力构建高效实时AI管道。
1342 43
|
SQL 人工智能 JSON
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
本文整理自阿里云的高级技术专家、Apache Flink PMC 成员李麟老师在 Flink Forward Asia 2025 新加坡[1]站 —— 实时 AI 专场中的分享。将带来关于 Flink 2.1 版本中 SQL 在实时数据处理和 AI 方面进展的话题。
682 0
Flink 2.1 SQL:解锁实时数据与AI集成,实现可扩展流处理
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
398 5
|
SQL 人工智能 数据挖掘
如何在`score`表中正确使用`COUNT`和`AVG`函数?SQL聚合函数COUNT与AVG使用指南
本文三桥君通过score表实例解析SQL聚合函数COUNT和AVG的常见用法。详解COUNT(studentNo)、COUNT(score)、COUNT()的区别,以及AVG函数对数值/字符型字段的不同处理,特别指出AVG()是无效语法。实战部分提供6个典型查询案例及结果,包含创建表、插入数据的完整SQL代码。产品专家三桥君强调正确理解函数特性(如空值处理、字段类型限制)对数据分析的重要性,帮助开发者避免常见误区,提升查询效率。
565 0
|
SQL 数据挖掘 关系型数据库
【SQL 周周练】一千条数据需要做一天,怎么用 SQL 处理电表数据(如何动态构造自然月)
题目来自于某位发帖人在某 Excel 论坛的求助,他需要将电表缴费数据按照缴费区间拆开后再按月份汇总。当时用手工处理数据,自称一千条数据就需要处理一天。我将这个问题转化为 SQL 题目。
566 12
|
SQL 关系型数据库 MySQL
SQL如何对不同表的数据进行更新
本文介绍了如何将表A的Col1数据更新到表B的Col1中,分别提供了Microsoft SQL和MySQL的实现方法,并探讨了多表合并后更新的优化方式,如使用MERGE语句提升效率。适用于数据库数据同步与批量更新场景。
|
SQL 数据采集 资源调度
【SQL 周周练】爬取短视频发现数据缺失,如何用 SQL 填充
爬虫爬取抖音和快手的短视频数据时,如果遇到数据缺失的情况,如何使用 SQL 语句完成数据的补全。
622 5
|
SQL DataWorks 数据管理
SQL血缘分析实战!数据人必会的3大救命场景
1. 开源工具:Apache Atlas(元数据管理)、Spline(血缘追踪) 2. 企业级方案:阿里DataWorks血缘分析、腾讯云CDW血缘引擎 3. 自研技巧:在ETL脚本中植入版本水印,用注释记录业务逻辑变更 📌 重点总结: