MySQL 聚合函数用于对一组数据进行计算并返回单一结果,常用于 GROUP BY 子句配合统计分析场景。以下是常用的聚合函数及用法:
-
功能:返回查询结果的行数。
-
语法:
COUNT(expr)
COUNT(*)
COUNT(1)
-
示例:
SELECT COUNT(*) AS total_users FROM users;
SELECT COUNT(email) AS users_with_email FROM users;
-
功能:计算数值列的总和(忽略 NULL)。
-
语法:
SUM(column)
-
示例:
SELECT SUM(amount) AS total_amount FROM orders;
SELECT SUM(amount) AS user_total FROM orders WHERE user_id = 100;
-
功能:计算数值列的平均值(忽略 NULL)。
-
语法:
AVG(column)
-
示例:
SELECT AVG(price) AS avg_price FROM products;
SELECT AVG(rating) AS avg_rating FROM products WHERE category = 'books';
-
功能:返回列中的最大值(适用于数值、字符串、日期等类型)。
-
语法:
MAX(column)
-
示例:
SELECT MAX(price) AS max_price FROM products;
SELECT MAX(order_date) AS latest_order FROM orders;
-
功能:返回列中的最小值(与
MAX()类似,支持多类型)。
-
语法:
MIN(column)
-
示例:
SELECT MIN(price) AS min_price FROM products;
SELECT MIN(register_date) AS earliest_reg FROM users;
-
功能:将分组中的字符串连接成一个字符串(需配合
GROUP BY使用)。
-
语法:
GROUP_CONCAT([DISTINCT] column [SEPARATOR '分隔符'])
-
示例:
SELECT
category,
GROUP_CONCAT(product_name SEPARATOR ', ') AS products
FROM products
GROUP BY category;
SELECT
user_id,
GROUP_CONCAT(DISTINCT tag) AS tags
FROM user_tags
GROUP BY user_id;
聚合函数常与 GROUP BY 结合,实现分组统计:
SELECT
user_id,
COUNT(order_id) AS order_count,
SUM(amount) AS total_spent
FROM orders
GROUP BY user_id;
WHERE 不能直接筛选聚合函数的结果,需用 HAVING:
SELECT
user_id,
COUNT(order_id) AS order_count
FROM orders
GROUP BY user_id
HAVING order_count > 5;
-
聚合函数会自动忽略
NULL 值(COUNT(*) 除外)。
-
若需对
NULL 视为 0 参与计算,可结合 IFNULL(),例如 SUM(IFNULL(score, 0))。
-
DISTINCT 可用于去重计算,如 COUNT(DISTINCT user_id) 统计不同用户的数量。
这些函数是数据分析和报表生成的基础,灵活组合可满足复杂的统计需求。