1.分组查询语法
SELECT 字段列表 FROM 表名[WHERE 条件]GROUP BY 分组字段名 [HAVING 分组后过滤条件];
2.where与having区别
1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果的过滤。
2.判断条件不同:where不能对聚合函数进行判断,而having可以。
3.案例演示
test原表:
1.查询男生与女生的数量
SELECT gender,COUNT(*)AS '数量'
FROM test
GROUP BY gender;
2. 统计男生与女生的平均年龄
SELECT gender AS '性别' ,AVG(age) AS '平均年龄'
FROM test
GROUP BY gender;
3.查询年龄小于30,并根据工作地点分组,获取数量大于等于3的地址
test2原表:
SELECT address AS '地址',COUNT(*) AS '数量'
FROM test2
WHERE age<30
GROUP BY address
HAVING COUNT(*)>=3
注意:
1.执行顺序:where>聚合函数>having。
2.分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。