MySQL 是一个流行的关系型数据库管理系统,它支持各种各样的查询操作,包括聚合操作。其中最常用的聚合操作是分组查询。
分组查询是指将数据按照指定的列进行分组,然后对每组数据进行聚合计算。例如,我们可以对一个订单表按照客户进行分组,然后统计每个客户的购买总额。
SELECT customer, SUM(amount) FROM orders GROUP BY customer;
上面的语句将 orders 表按照 customer 列进行分组,然后计算每组的 amount 列之和。注意,我们在 SELECT 子句中使用的列必须是 GROUP BY 子句中出现的列或者聚合函数。否则 MySQL 将无法确定如何对每个分组进行计算。
除了 SUM 函数外,MySQL 还提供了许多其他的聚合函数,包括 COUNT、AVG、MAX 和 MIN 等等。这些函数都可以用来计算分组的结果。
SELECT category, COUNT(*), AVG(price), MAX(price), MIN(price) FROM products GROUP BY category;
上面的语句将 products 表按照 category 列进行分组,然后计算每组的行数、price 列的平均值、最大值和最小值。
最后,需要注意的是,分组操作不一定要针对整个表进行。我们可以使用 WHERE 子句筛选出需要的数据,然后再进行分组。
SELECT year, month, SUM(amount) FROM orders WHERE year = 2021 AND status = 'paid' GROUP BY year, month;
上面的语句将 orders 表中 2021 年已付款的订单按照月份进行分组,然后计算每月订单的总金额。