SQL查询系列之七:SQL分组查询
很多情况下,我们需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人数,这个时就要用到 SQL 的分组查询,又称为 聚合查询 。 聚合操作的语法如下: SELECT [field1,field2,……fieldn] fun_name FROM tablename [WHERE where_contition] [GROUP BY field1,field2,……fieldn [WITH ROLLUP]] [HAVING where_contition] 对其参数进行以下说明。 ¡ fun_name表示要做的聚合操作,也就是聚合函数,常用的有sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)。 ¡ GROUP BY关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门就应该写在group by后面。 ¡ WITH ROLLUP是可选语法,表明是否对分类聚合后的结果进行再汇总。 ¡ HAVING关键字表示对分类后的结果再进行条件的过滤。 注意:having和where的区别在于having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,我们尽可能用where先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行再过滤。 示例: 要emp表中统计总人数: