Skip to content

分组查询

语法

bash
SELECT 字段列表 from 表名 WHERE 条件 GROUP BY 分组字段名 HAVING 分组后过滤条件

where 与 having 区别

  • 执行时机不同, where 是分组之前过滤,不满足 where 条件不参与分组,而 having 是分组之后对结果过滤

  • 判断条件不同,where 不能对聚合函数进行判断,而 having 可以

bash

- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

- 执行顺序: where > 聚合函数 > having

- 支持多字段分组,具体语法为 group by columnA,columnB

案例

根据性别分组,统计男员工和女员工的数量

bash

SELECT gender,count(*) from emp group by gender;

根据性别分组,统计男员工和女员工的平均年龄

bash

SELECT gender,avg(age) from emp group by gender;

查询年龄小于 45 的员工,并依据 工作地址分组,获取员工数量大于等于 3 的工作地址

bash

SELECT workaddress,count(*)  from emp WHERE age<45 group by workaddress having count(*) >=3;

统计各个工作地址上班的男性和女性员工的数据

bash
SELECT gender , workaddress ,count(*) from emp group by gender,workaddress;