MySQL GROUP BY 语句详细说明以及案例
参考资料
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 可以轻松实现数据的分组统计和分析。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
本文来自《西里网 . 宝塔 | 西里网》 -- 发布时间:2025-03-29
本页链接:https://bt.ciilii.com/show/news-26.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
