MySQL 高级查询 —— 聚合函数与分组查询

分类:数据库 时间:2026-02-24 浏览:1
1

一、聚合函数

聚合函数用于对一组数据进行统计计算,常用的有:

函数作用
COUNT()统计记录数
SUM()求和
AVG()求平均值
MAX()求最大值
MIN()求最小值

示例:

-- 统计用户总数
SELECT COUNT(*) AS total FROM user; -- AS 给字段起别名

-- 统计所有用户的平均年龄
SELECT AVG(age) AS avg_age FROM user;

-- 求最大年龄和最小年龄
SELECT MAX(age) AS max_age, MIN(age) AS min_age FROM user;

-- 统计年龄大于20的用户数
SELECT COUNT(*) FROM user WHERE age > 20;

二、分组查询(GROUP BY)

1. 基础分组

语法:SELECT 分组字段, 聚合函数 FROM 表名 GROUP BY 分组字段;示例:先给 user 表添加gender字段(性别),再按性别分组统计:

-- 添加性别字段
ALTER TABLE user ADD COLUMN gender ENUM('男','女','未知') DEFAULT '未知';

-- 插入测试数据
INSERT INTO user (username, password, age, gender) VALUES 
('tianqi', '333333', 22, '男'),
('xiaoba', '444444', 19, '女');

-- 按性别分组,统计每组人数和平均年龄
SELECT gender, COUNT(*) AS count, AVG(age) AS avg_age FROM user GROUP BY gender;

2. 分组后筛选(HAVING)

WHERE 筛选原始数据,HAVING 筛选分组后的数据:

-- 筛选分组后人数大于2的性别组
SELECT gender, COUNT(*) AS count FROM user 
GROUP BY gender 
HAVING count > 2;

总结

  1. 聚合函数用于数据统计,COUNT (*) 统计所有记录,COUNT (字段) 排除 NULL 值;

  2. GROUP BY 按指定字段分组,需结合聚合函数使用;

  3. HAVING 用于分组后筛选,WHERE 用于分组前筛选,优先级:WHERE > GROUP BY > HAVING。

文章链接:http://www.qwkf.cn//shujuku/34.html
文章标题:MySQL 高级查询 —— 聚合函数与分组查询

相关阅读