MySQL GROUP BY 语句详细说明

功能GROUP BY 语句用于将结果集按一个或多个列进行分组,通常与聚合函数(如 COUNTSUMAVGMAXMIN 等)一起使用,以便对每个分组进行计算。

语法

SELECT column1, column2, aggregate_function(column3)
FROM table_name
WHERE condition
GROUP BY column1, column2;

说明

  1. column1, column2:需要分组的列。

  2. aggregate_function(column3):对分组后的数据进行聚合计算。

  3. WHERE condition:可选,用于过滤数据。

  4. GROUP BY 子句必须出现在 WHERE 子句之后,ORDER BY 子句之前。

注意事项

  • SELECT 中的非聚合列必须出现在 GROUP BY 子句中。

  • GROUP BY 可以按多列分组,分组顺序从左到右。


案例

假设有一个 orders 表,结构如下:

order_idcustomer_idorder_dateamount
11012023-01-01100
21022023-01-02200
31012023-01-03150
41032023-01-04300
51022023-01-05250

案例 1:按 customer_id 分组,计算每个客户的订单总金额。

SELECT customer_id, SUM(amount) AS total_amount
FROM orders
GROUP BY customer_id;

结果

customer_idtotal_amount
101250
102450
103300

案例 2:按 customer_id 分组,计算每个客户的订单数量。

SELECT customer_id, COUNT(order_id) AS order_count
FROM orders
GROUP BY customer_id;

结果

customer_idorder_count
1012
1022
1031

案例 3:按 customer_idorder_date 分组,计算每个客户每天的订单总金额。

SELECT customer_id, order_date, SUM(amount) AS daily_amount
FROM orders
GROUP BY customer_id, order_date;

结果

customer_idorder_datedaily_amount
1012023-01-01100
1012023-01-03150
1022023-01-02200
1022023-01-05250
1032023-01-04300

通过 GROUP BY 可以轻松实现数据的分组统计和分析。

本篇文章内容来源于:MySQL GROUP BY 语句详细说明以及案例