DQL-分组查询
GROP BY
语法
1 | SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]; |
- where 与 having 区别
- 执行时机不同:where 是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
- 判断条件不同:where 不能对聚合函数进行判断,而having可以。
注意
- 执行顺序:where > 聚合函数 > having.
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
示例员工表
id | name | age | gender | workaddress |
---|---|---|---|---|
1 | 张琳 | 20 | 女 | 上海 |
2 | 李强 | 24 | 男 | 广州 |
3 | 王芳 | 29 | 女 | 广州 |
4 | 刘杰 | 36 | 男 | 深圳 |
5 | 陈娜 | 29 | 女 | 上海 |
6 | 韦丽 | 24 | 女 | 上海 |
分组查询的例子:
1 | -- 分组查询 |
3 的结果是:
workaddress | employee_count |
---|---|
上海 | 3 |
广州 | 2 |