数据库管理和应用
MySQL 分组——
数据处理中的关键环节
与实操指南

01
基本语法
02
分组和聚合函数的结合使用
聚合函数是分组操作的重要补充。常用的聚合函数有:
用于计算分组中的行数。例如,COUNT(*)会计算每个分组中的记录数量。如果有一个员工表employees,包含department(部门)列,要统计每个部门的员工人数,可以使用以下查询:
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
用于计算分组中某列数值的总和。如前面提到的按日期计算总销售额的例子。
用于计算分组中某列数值的平均值。例如,有一个学生成绩表scores,包含class(班级)和score(成绩)列,要计算每个班级的平均成绩,可以使用以下查询:
SELECT class, AVG(score) AS average_score
FROM scores
GROUP BY class;
分别用于获取分组中某列的最大值和最小值。例如,在一个产品库存表inventory中,有product_category(产品类别)和quantity(库存数量)列,要找出每个产品类别中的最大和最小库存数量,可以使用以下查询:
SELECT product_category, MAX(quantity) AS max_quantity, MIN(quantity) AS min_quantity
FROM inventory
GROUP BY product_category;
03
HAVING 子句与分组的关系
HAVING子句用于在分组之后对分组结果进行筛选。它类似于WHERE子句,但WHERE子句是在分组之前对行进行筛选,而HAVING子句是对分组后的汇总结果进行筛选。
例如,在前面计算每天总销售额的例子中,如果您只想显示总销售额大于 1000 的日期,可以使用以下查询:
SELECT order_date, SUM(order_amount) AS total_sales
FROM orders
GROUP BY order_date
HAVING total_sales > 1000;
这里,先按照order_date进行分组并计算总销售额,然后使用HAVING子句筛选出总销售额大于 1000 的分组(日期)。
04
分组的嵌套(多层分组)
MySQL 允许进行多层分组,即可以按照多个列的层次结构进行分组。例如,有一个销售数据表,包含region(地区)、city(城市)和sales_amount(销售额)列。您可以先按地区分组,然后在每个地区内按城市分组,并计算每个城市的销售额汇总,如下所示:
SELECT region, city, SUM(sales_amount) AS city_sales_total
FROM sales_data
GROUP BY region, city;
这个查询会先按照region列进行分组,然后在每个地区分组内再按照city列进行分组,并计算每个城市分组的销售额总和。这样可以得到每个地区内每个城市的销售汇总数据。
入门内容可点击【数据分析入门】进行查看,进阶内容可点击【数据分析进阶】,后续将会对数据分析中涉及到的内容做系列介绍,如对内容感兴趣,可关注公众号及时接收更新内容。

FOLLOW US
关注我们
问题咨询请扫码
文中部分图片源自网络,如有侵权,请联系删除





