技术文摘
SQL 中 group by 和 having 用法总结
2025-01-15 03:50:04 小编
SQL 中 group by 和 having 用法总结
在 SQL 数据库操作中,group by 和 having 是两个重要且常用的关键字,掌握它们的用法对于数据的查询和分析至关重要。
group by 子句主要用于对查询结果进行分组。它允许我们根据一个或多个列的值将结果集划分为多个组,从而可以对每个组进行聚合操作,比如计算每组的总和、平均值、计数等。例如,在一个存储员工信息的表中,有部门、薪资等字段,若想统计每个部门的员工人数,就可以使用 group by 子句。示例代码如下:
SELECT department, COUNT(*)
FROM employees
GROUP BY department;
上述代码按照 department 字段对员工进行分组,然后统计每个组中的员工数量。通过 group by,我们能够清晰地了解每个部门的员工规模。
having 子句则是用于对分组后的结果进行筛选。与 where 子句不同,where 是在分组之前对单个行进行筛选,而 having 是在分组之后对整个组进行条件过滤。例如,还是在员工表中,在统计每个部门的平均薪资后,只想显示平均薪资大于 8000 的部门。代码如下:
SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > 8000;
这段代码先按照部门进行分组,计算每个部门的平均薪资,然后通过 having 子句筛选出平均薪资大于 8000 的部门。
需要注意的是,在使用 group by 和 having 时,select 子句中出现的非聚合列必须包含在 group by 子句中。这是因为在分组后,每个组只返回一行结果,非聚合列必须有明确的取值,否则会导致结果不明确。
group by 和 having 是 SQL 中强大的工具,group by 帮助我们将数据按照特定条件分组并进行聚合操作,having 则进一步对分组后的结果进行筛选,使我们能够获取到更有针对性和价值的数据信息,在数据库开发和数据分析工作中发挥着重要作用。
- C 语言关键字的运用诀窍
- 不到 50 行 Node.js 代码 实现稀土掘金社区自动签到
- GO 构建高并发高可用分布式系统:Log 微服务的实现
- Typora 收费后 这款开源 Markdown 编辑器走红
- 代码滥用激怒作者 开源大神删库跑路
- Java 性能测试的重要性何在
- 微服务难点解析:服务拆分后日志串联问题
- 嵌入式软件出错的五大根源
- 十个日常脚本分享,你掌握了吗?
- 为何 Go 语言层面不支持 Map 并发?
- CSS 动画的深度解析与浅出阐释
- 面试突击:方法重写与方法重载的区别
- Python 实现自动关机程序及 exe 打包
- 2022 年五大值得关注的开发工具
- Python 解析网易云歌曲评论信息 可视化处理揭示有趣规律