暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 分组:数据处理中的关键环节与实操指南

86



数据库管理和应用

MySQL 分组——

数据处理中的关键环节

               与实操指南

什么是分组?


     在 MySQL 中,分组是一种用于将查询结果按照一个或多个列的值进行划分的操作。它是通过把聚合函数,如count()、sum()等添加到一个带有group by子句的select语句中来实现的。

     例如,您有一个包含销售订单的表,其中有 “订单日期” 和 “订单金额” 列。如果您想按日期统计每天的总销售额,就可以使用分组操作。





01

基本语法


基本语法格式为:SELECT column1, column2,..., aggregate_function(column) FROM table_name GROUP BY column1, column2,...;

     其中,column1, column2,...是用于分组的列,可以是一个或多个列名。aggregate_function是聚合函数,用于计算每个分组的汇总值,如SUM()用于求和,COUNT(*)用于统计行数等。table_name是要查询的表名。

举个栗子,假设有一个名为orders的表,包含order_date(订单日期)和order_amount(订单金额)列。要计算每天的总销售额,可以使用以下查询:


SELECT order_date, SUM(order_amount) AS total_sales

FROM orders

GROUP BY order_date;


   这个查询会按照order_date列对orders表进行分组,然后对于每个分组(即每天),计算order_amount列的总和,并将结果显示为total_sales。




02

分组和聚合函数的结合使用


聚合函数是分组操作的重要补充。常用的聚合函数有:



COUNT()


     用于计算分组中的行数。例如,COUNT(*)会计算每个分组中的记录数量。如果有一个员工表employees,包含department(部门)列,要统计每个部门的员工人数,可以使用以下查询:


   SELECT department, COUNT(*) AS employee_count

       FROM employees

       GROUP BY department;



SUM()


用于计算分组中某列数值的总和。如前面提到的按日期计算总销售额的例子。



AVG()


用于计算分组中某列数值的平均值。例如,有一个学生成绩表scores,包含class(班级)和score(成绩)列,要计算每个班级的平均成绩,可以使用以下查询:


    SELECT class, AVG(score) AS average_score

        FROM scores

        GROUP BY class;



MAX () 和 MIN ()


分别用于获取分组中某列的最大值和最小值。例如,在一个产品库存表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

关注我们

问题咨询请扫码

文中部分图片源自网络,如有侵权,请联系删除



文章转载自数据分析记事本,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论