SQL 聚合函数总结:COUNT、SUM、AVG、MAX、MIN 详解
在实际开发和面试中,聚合函数(Aggregate Functions)是 SQL 的重点考察内容。它们可以帮助我们对数据进行统计、汇总和计算,比如求总数、平均值、最大值、最小值等。
本文将带你系统掌握 SQL 常见的聚合函数:COUNT、SUM、AVG、MAX、MIN,配合示例,快速理解和应用。
一、COUNT():统计数量
COUNT() 用于统计行数,常见用法有:
1. COUNT(*):统计总行数(包含 NULL)。
2. COUNT(column):统计某列中非 NULL 的值数量。
示例:
-- 查询 users 表的总用户数
SELECT COUNT(*) AS total_users FROM users;
-- 查询 email 不为空的用户数
SELECT COUNT(email) AS valid_emails FROM users;
应用场景:统计注册用户数、有效订单数。
二、SUM():求和
SUM() 用于计算数值列的总和,通常结合条件查询。
示例:
-- 统计所有订单的总金额
SELECT SUM(amount) AS total_amount FROM orders;
-- 统计已支付订单的总金额
SELECT SUM(amount) AS paid_amount FROM orders WHERE status = 'paid';
应用场景:财务统计、销售额汇总。
三、AVG():求平均值
AVG() 用于计算某列的平均值。
示例:
-- 查询所有订单的平均金额
SELECT AVG(amount) AS avg_amount FROM orders;
-- 查询某个用户的平均消费金额
SELECT AVG(amount) FROM orders WHERE user_id = 1;
应用场景:分析用户平均消费、计算某类商品的平均价格。
四、MAX():求最大值
MAX() 用于获取某列的最大值。
示例:
-- 查询最高订单金额
SELECT MAX(amount) AS max_order FROM orders;
-- 查询最晚的注册时间
SELECT MAX(created_at) AS last_register FROM users;
应用场景:找出最大值,如最高分、最新时间、最大金额。
五、MIN():求最小值
MIN() 用于获取某列的最小值。
示例:
-- 查询最小订单金额
SELECT MIN(amount) AS min_order FROM orders;
-- 查询最早的注册时间
SELECT MIN(created_at) AS first_register FROM users;
应用场景:找出最小值,如最低价、最早时间、最小库存。
六、聚合函数与 GROUP BY 联合使用
聚合函数常常配合 GROUP BY 使用,进行分组统计。
示例:
-- 按用户统计订单数量
SELECT user_id, COUNT(*) AS order_count
FROM orders
GROUP BY user_id;
-- 按商品分类统计销售总额
SELECT category, SUM(amount) AS total_sales
FROM products
GROUP BY category;
应用场景:报表统计、用户行为分析。
七、面试高频考点
1. COUNT(*) vs COUNT(column)
COUNT(*) 统计所有行。
COUNT(column) 只统计该列非 NULL 的值。
2. AVG() 遇到 NULL 怎么处理?
NULL 值不会参与计算。
3. 聚合函数能否和 WHERE 一起用?
可以,但 WHERE 过滤的是行数据;如果要过滤聚合结果,要用 HAVING。
示例:
-- 统计订单数量大于 5 的用户
SELECT user_id, COUNT(*) AS order_count
FROM orders
GROUP BY user_id
HAVING COUNT(*) > 5;
八、总结
COUNT():统计数量。
SUM():计算总和。
AVG():求平均值。
MAX():最大值。
MIN():最小值。
聚合函数配合 GROUP BY 使用,能完成强大的分组统计分析。掌握这些函数,不仅能应对日常开发需求,更能在面试中快速拿分。 🚀