SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件

Posted 绍耕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件相关的知识,希望对你有一定的参考价值。

第3章 聚合与排序:3-3 为聚合结果指定条件

使用COUNT函数等聚合函数对表中数据进行汇总操作时,为其指定条件的不是WHERE子句,而是HAVING子句。
聚合函数可以在SELECT子句、 HAVING子句和ORDER BY子句中使用。
WHERE子句用来指定数据行的条件, HAVING子句用来指定分组的条件


 ■ HAVING子句

■ HAVING子句的构成要素

■ 相对于HAVING子句,更适合写在WHERE子句中的条件

笔者认为,聚合键所对应的条件还是应该书写在 WHERE 子句之中。
理由有两个。
首先,根本原因是 WHERE 子句和 HAVING 子句的作用不同。如前所述, HAVING 子句是用来指定“组”的条件的。
因此,记录“行”所对应的条件还是应该写在 WHERE 子句当中。这样一来,书写出的 SELECT 语句不但可以分清两者各自的功能,理解起来也更加容易。

WHERE 子句 = 指定行所对应的条件
HAVING 子句 = 指定组所对应的条件
其次,对初学者来说,研究 DBMS 的内部实现这一话题有些深奥,这里就不做介绍了,感兴趣的读者可以参考随后的专栏——WHERE 子句和 HAVING 子句的执行速度。

以上是关于SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件的主要内容,如果未能解决你的问题,请参考以下文章

SQL基础教程(第2版)第3章 聚合与排序:3-2 对表进行分组

SQL基础教程(第2版)第3章 聚合与排序:3-4 对查询结果进行排序

SQL基础教程(第2版)第3章 聚合与排序:3-1 对表进行聚合查询

SQL基础教程(第2版)第8章 SQL高级处理:8-1 窗口函数

SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询

SQL基础教程(第2版)第4章 数据更新:4-3 数据的更新(UPDATE)