Mysql——分组统计

本文由小王同学讲解MySQL的分组统计,介绍了如何使用`GROUP BY`和`HAVING`子句对数据进行分组和过滤。通过实例演示了创建部门、员工和工资级别表,并展示了如何查询各部门的平均工资和最低工资,以及平均工资低于2000的部门信息。文章适合初学者了解和学习MySQL中的分组统计操作。

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

???前言

??作者简介:友友们大家好,我是你们的小王同学???

??个人主页:小王同学??****

?? 系列专栏:牛客刷题专栏??****

?? 推荐一款非常火的面试、刷题神器??牛客刷题

觉得小王写的不错的话 麻烦动动小手 点赞?? 收藏 评论??

今天给大家带来的系列是:Mysql——分组统计

mysql 刷题 系列牛客网

### MySQL 分组统计查询方法 在 MySQL 数据库中,分组统计是一种强大的功能,能够帮助用户对数据进行分类并计算每类的汇总信息。这种查询主要依赖于 `GROUP BY` 子句和聚合函数(如 `COUNT()`、`SUM()`、`AVG()` 等)。以下是关于如何使用 `GROUP BY` 进行数据汇总的具体说明。 #### 基本语法结构 `GROUP BY` 子句的基本语法如下所示[^2]: ```sql SELECT 列名, 聚合函数(列名) FROM 表名 WHERE 条件表达式 GROUP BY 列名; ``` 其中,`GROUP BY` 后面指定的是用来分组的一个或多个字段名称。这些字段决定了每一组的内容划分方式。 #### 经典示例解析 ##### 1. 统计不同性别的人数 假设有一个名为 `employees` 的员工表,其中包括两列表示姓名 (`name`) 和性别 (`gender`)。如果要统计男女人数,则可执行以下 SQL 查询语句[^4]: ```sql SELECT gender, COUNT(*) AS count_gender FROM employees GROUP BY gender; ``` 此查询会返回两个结果项——分别是男性人数和女性人数,并将它们标记为 `count_gender` 字段[^4]。 ##### 2. 计算各性别的平均年龄 继续沿用上面提到的那个例子,在同一个表格里还有一栏记录着每位雇员的实际岁数(`age`)。那么为了得到男女各自年龄段上的均值情况,应该这样写代码片段: ```sql SELECT gender, AVG(age) AS avg_age FROM employees GROUP BY gender; ``` 这段脚本能给出针对两种性别人群所对应的平均年纪数值。 ##### 3. 高级过滤条件下的复杂场景应用实例 有时候仅依靠简单的分组还不足以满足实际需求;此时可以通过增加额外约束进一步筛选符合条件的目标群体。比如下面这个例子展示了怎样找出那些至少有两名成员参与的小队编号及其总分数合计值[^4]: ```sql SELECT team_id, SUM(score) as total_score FROM scores GROUP BY team_id HAVING COUNT(member_id) >= 2; ``` 这里引入了一个新的关键字叫做 `HAVING`, 它的作用类似于 WHERE , 不过它是专门应用于已经完成分组后的数据集合之上做二次限定处理[^3]. 以上就是利用 MySQL 实现基础到进阶层次不等的各种形式下基于 GROUP BY 执行统计数据的操作办法介绍. #### 注意事项 当运用 `GROUP BY` 结构编写查询的时候需要注意几点重要原则: - SELECT 子句里的所有非聚集项目都必须出现在 GROUP BY 子句之中. - 如果存在 NULL 值的话,默认会被当作单独的一组对待.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值