SQL教程:HAVING子句与GROUP BY的应用

需积分: 10 0 下载量 71 浏览量 更新于2024-08-15 收藏 379KB PPT 举报
"这篇资料是关于SQL语言的学习课件,主要讲解了如何使用HAVING子句来进行更复杂的查询。HAVING子句常与GROUP BY一起使用,用于在聚合后的结果集中进行过滤,与WHERE子句不同,WHERE是在数据聚合前进行筛选。HAVING子句中的列必须是GROUP BY或聚合函数中的列。资料提供了两个练习,练习1是按部门编码统计课程的总报名人数,练习2是找出部门编码为01的课程的总报名人数。此外,还介绍了Transact-SQL语言的基本组成,包括DDL(数据定义语言)、DML(数据操作语言)和DCL(数据控制语言),以及SELECT子句的使用,如消除重复值、返回前N行数据和修改列标题等。" 在SQL查询中,HAVING子句是用于在聚合函数的结果上设置过滤条件,它与WHERE子句的主要区别在于WHERE是在数据分组前进行过滤,而HAVING则在数据经过GROUP BY聚合后对分组进行过滤。HAVING子句的使用场景通常涉及到对统计结果的进一步限制,例如,我们可能想找出某个特定类别(如“信息技术”类)的平均报名人数,这时就可以结合GROUP BY和HAVING来实现。 在提供的练习中,练习1要求按课程的系部编码(departno)分组并计算每个系部的总报名人数(sum(willnum)),这可以通过`SELECT departno, SUM(willnum) FROM course GROUP BY departno`来完成。而练习2则在此基础上添加了HAVING子句,用于找出部门编码为01的系部其开设的课程总报名人数,对应的SQL语句是`SELECT departno, SUM(willnum) FROM course GROUP BY departno HAVING departno='01'`。 Transact-SQL是SQL的一种扩展,广泛应用于Microsoft SQL Server。在介绍中,我们看到它包含了数据定义、操作和控制三大语言组件,其中SELECT子句是DML中的核心,用于从一个或多个表中检索数据。SELECT可以配合DISTINCT去除重复值,使用TOPn或TOPn PERCENT获取前N行数据,还可以通过AS关键字或者直接在列名后添加新的标题来修改输出列的显示名称。 在实际应用中,理解并熟练掌握HAVING子句和SELECT子句的各种用法对于数据分析和数据处理至关重要,它们能够帮助我们有效地从大量数据中提取所需信息,满足各种复杂的查询需求。