MySQL GROUP BY 语句详细说明以及案例
2025-03-06
5
MySQL GROUP BY 语句详细说明
功能:GROUP BY
语句用于将结果集按一个或多个列进行分组,通常与聚合函数(如 COUNT
、SUM
、AVG
、MAX
、MIN
等)一起使用,以便对每个分组进行计算。
语法:
SELECT column1, column2, aggregate_function(column3) FROM table_name WHERE condition GROUP BY column1, column2;
说明:
column1, column2
:需要分组的列。aggregate_function(column3)
:对分组后的数据进行聚合计算。WHERE condition
:可选,用于过滤数据。GROUP BY
子句必须出现在WHERE
子句之后,ORDER BY
子句之前。
注意事项:
SELECT
中的非聚合列必须出现在GROUP BY
子句中。GROUP BY
可以按多列分组,分组顺序从左到右。
案例
假设有一个 orders
表,结构如下:
order_id | customer_id | order_date | amount |
---|---|---|---|
1 | 101 | 2023-01-01 | 100 |
2 | 102 | 2023-01-02 | 200 |
3 | 101 | 2023-01-03 | 150 |
4 | 103 | 2023-01-04 | 300 |
5 | 102 | 2023-01-05 | 250 |
案例 1:按 customer_id
分组,计算每个客户的订单总金额。
SELECT customer_id, SUM(amount) AS total_amount FROM orders GROUP BY customer_id;
结果:
customer_id | total_amount |
---|---|
101 | 250 |
102 | 450 |
103 | 300 |
案例 2:按 customer_id
分组,计算每个客户的订单数量。
SELECT customer_id, COUNT(order_id) AS order_count FROM orders GROUP BY customer_id;
结果:
customer_id | order_count |
---|---|
101 | 2 |
102 | 2 |
103 | 1 |
案例 3:按 customer_id
和 order_date
分组,计算每个客户每天的订单总金额。
SELECT customer_id, order_date, SUM(amount) AS daily_amount FROM orders GROUP BY customer_id, order_date;
结果:
customer_id | order_date | daily_amount |
---|---|---|
101 | 2023-01-01 | 100 |
101 | 2023-01-03 | 150 |
102 | 2023-01-02 | 200 |
102 | 2023-01-05 | 250 |
103 | 2023-01-04 | 300 |
通过 GROUP BY
可以轻松实现数据的分组统计和分析。
本篇文章内容来源于:MySQL GROUP BY 语句详细说明以及案例
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。