参考资料

  1. MySQL 导出数据详细说明以及案例
  2. 使用 MySQL 二进制方式连接
  3. MySQL 事务详细说明以及案例
  4. MySQL ORDER BY(排序) 语句详细说明以及案例
  5. MySQL 查询数据详细说明以及案例
  6. MySQL ALTER 命令详细说明以及案例
  7. MySQL 处理重复数据详细说明以及案例
  8. MySQL UNION 操作符详细说明以及案例

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 可以轻松实现数据的分组统计和分析。