GROUP BY
子句来将结果集按一个或多个列进行分组,并可结合聚合函数如COUNT(), SUM(), AVG(), MAX(), MIN()等进行数据统计。MySQL数据库的分组查询(GROUP BY)是一种用于对数据进行聚合和分类的查询方法,通过使用GROUP BY子句,可以将数据按照指定的列进行分组,并对每个分组进行聚合计算,以下是关于MySQL分组查询的详细解答:
一、分组查询语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
二、where与having区别
1、执行时机不同:
where
是分组之前进行过滤,不满足where
条件的行不参与分组。
having
是分组之后对结果进行过滤。
2、判断条件不同:
where
不能对聚合函数进行判断,而having
可以。
3、示例:
where
:在分组前筛选数据。
having
:在分组后筛选数据。
三、案例演示
案例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的地址
SELECT address AS '地址', COUNT(*) AS '数量' FROM test2 WHERE age < 30 GROUP BY address HAVING COUNT(*) >= 3;
四、注意事项
1、执行顺序:where
> 聚合函数 >having
。
2、查询字段:分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
MySQL的分组查询是一个非常强大的工具,能够帮助我们高效地进行数据统计和分析,通过合理使用GROUP BY
子句、结合聚合函数和索引优化,可以显著提高查询性能,无论是销售数据分析、用户行为分析,还是其他统计分析场景,分组查询都是不可或缺的工具。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1248536.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复