十、GROUP BY 和 HAVING 的使用

简介: 十、GROUP BY 和 HAVING 的使用

一、group by 应用场景

在实际应用中我们会遇到如下的场景:


  • 公司想了解每个部门有多少员工;
  • 班主任想统计每科第一名的成绩;
  • 连锁店想知道每个门店男女员工的数量以及平均年龄。


这时我们就可以使用 group by 语句来解决这类需求。从字面上来理解,group by 表示根据某种规则对数据进行分组,他必须配合聚合函数进行使用,对数据进行分组后可以进行 countsumavgmax min 运算。语法如下:

SELECT column_name, aggregate_function(column_name) 
FROM table_name
GROUP BY column_name

TIP:

aggregate_function:表示聚合函数

group by :可以对一列或者多列进行分组


例如:

1. 查询出全校有多少名男学生和女学生

select sex, count(*) from student group by sex;

2. 查询每个班级有多少学生

select class, count(*) from student group by class;

3. 查询每个门店员工薪资总和

select dept,sum(salary) from employee group by dept;

二、having 的使用

在 SQL 中增加 HAVING 子句原因是, WHERE 关键子无法与聚合函数一起使用。 HAVING 子句可以对分组后的各组数据进行筛选。语法如下:

SELECT column_name,aggregate_funtion(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

例如:

1. 查询人数小于30人的班级

select class,count(*) from student group by class having count(*)<30

2. 查询每个门店薪资大于5000的员工

select dept,max(salary) from employee group by dept having max(salary)>5000
目录
相关文章
并发与并行的区别(详细介绍)
并发与并行的区别(详细介绍)
11223 0
|
3月前
|
JSON fastjson 数据处理
JSON转Map
该代码段演示了如何使用Fastjson将JSON字符串转换为Map对象。通过`JSONObject.parse()`方法解析JSON字符串,并强制转换为Map类型,便于后续数据处理与访问。
|
7月前
|
存储 存储控制器 Windows
错误代码0x80070570解决办法
错误代码0x80070570通常与文件系统损坏或硬件问题相关,以下是综合解决方案:
3137 24
|
10月前
|
网络安全 开发工具 git
Git仓库创建与代码上传指南
本教程介绍了将本地项目推送到远程Git仓库的完整流程,包括初始化本地仓库、添加和提交文件、创建远程仓库、关联远程地址及推送代码。同时,还提供了`.gitignore`配置、分支管理等可选步骤,并针对常见问题(如认证失败、分支不匹配、大文件处理及推送冲突)给出了解决方案。适合初学者快速上手Git版本控制。
|
SQL 缓存 安全
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
14864 2
|
Arthas 监控 安全
arthas如何跟踪某个方法?并查看方法的入参和出参?
arthas如何跟踪某个方法?并查看方法的入参和出参?
2731 6
|
JSON JavaScript 前端开发
如何检查 JavaScript 对象是否为空
【8月更文挑战第18天】
1624 5
如何检查 JavaScript 对象是否为空
|
SQL 关系型数据库 MySQL
MySQL中group by子句与having实例分析
MySQL中group by子句与having实例分析
2198 0
|
Java 关系型数据库 DataX
DATAX数据同步
DATAX数据同步
3593 0