SQL 必知必会 Chapter 9 —— 汇总数据

本文详细介绍SQL中的聚集函数,如AVG、COUNT、MAX、MIN、SUM等,用于数据汇总和统计。同时,介绍了如何使用DISTINCT参数来聚集不同值,以及如何组合多个聚集函数以获取更全面的数据分析。

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


typora-copy-images-to: SQL 必知必会

SQL 必知必会 Chapter 9 汇总数据


9.1 聚集函数

  • 我们需要汇总数据而不用实际检索出来

    • 确定表中行数
    • 获得表中某些行的和
    • 找出表列的最大、最小、平均值
  • 聚集函数是指对某些行运行的函数,计算并返回一个值

![1552451844436](C:\Users\James\Desktop\博客\SQL 必知必会\1552451844436.png)

  • AVG()函数——平均值函数
SELECT AVG(prod_price) AS avg_price
FROM Products;
# 可以包括 WHERE 子句

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

# AVG()函数忽略列值为NULL的行
# 获得多列的平均值,必须使用多个AVG()函数

在这里插入图片描述

  • COUNT()函数

  • 使用COUNT(*) 对表中行的数目进行计数,不管表列中是空值还是非空值

  • 使用COUNT(COLUMN)函数对特定列中具有值的行进行计数,忽略NULL

SELECT COUNT(*) AS num_cust
FROM Customers;
# 不管行中各列有什么值

SELECT COUNT(cust_email) AS num_cust
FROM Customers;
# 说明: NULL 值
# 如果指定列名,则 COUNT() 函数会忽略指定列的值为空的行,但如果
# COUNT() 函数中用的是星号( * ),则不忽略
  • MAX()函数
  • 返回列中的最大值,要求制定列名
SELECT MAX(prod_price) AS max_price
FROM Products;

# 在用于文本数据时, MAX() 返回按该列排序后的最后一行
# MAX() 函数忽略列值为 NULL 的行
  • MIN()函数
  • 返回列中的最小值,要求制定列名
SELECT MIN(prod_price) AS min_price
FROM Products;
# 提示:对非数值数据使用 MIN()
# 虽然 MIN() 一般用来找出最小的数值或日期值,但许多(并非所有)
# DBMS 允许将它用来返回任意列中的最小值,包括返回文本列中的最小值。在用于文本# 数据时, MIN() 返回该列排序后最前面的行
  • SUM()函数
  • 用来返回指定列值的和(总计)
SELECT SUM(quantity) AS items_ordered
FROM OrderItems
WHERE order_num = 20005;

# 合计每项物品的item_price*quantity ,得出总的订单金额
SELECT SUM(item_price*quantity) AS total_price
FROM OrderItems
WHERE order_num = 20005
# 利用标准的算术操作符,所有聚集函数都可用来执行多个列上的计算

9.2 聚集不同值

  • 对所有行执行计算,指定 ALL 参数或不指定参数(因为 ALL 是默认行为)
  • 只包含不同的值,指定 DISTINCT 参数
SELECT AVG(DISTINCT prod_price) AS avg_price
FROM Products
WHERE vend_id = 'DLL01';
# 在使用了 DISTINCT 后,此例子中的 avg_price 比较高,因
# 为有多个物品具有相同的较低价格。排除它们提升了平均价格

#  DISTINCT 不能用于 COUNT(*)

9.3 组合聚集函数

SELECT COUNT(*) AS num_items,
MIN(prod_price) AS price_min,
MAX(prod_price) AS price_max,
AVG(prod_price) AS price_avg
FROM Products;
# 在指定别名以包含某个聚集函数的结果时,不应该使用表中实际的列名

在这里插入图片描述

9.4 小结

  • 聚集函数用来汇总数据。SQL 支持 5 个聚集函数,可以用多种方法使用
    它们,返回所需的结果。这些函数很高效,它们返回结果一般比你在自
    己的客户端应用程序中计算要快得多
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值