如何在MySQL同一条查询中使用GROUP和SUM实现每日销量统计
高效统计每日各产品销售总量的MySQL查询方案
核心查询语句
通过关联订单主表与订单明细表,按日期和产品编码分组求和,即可得到所需统计结果:
SELECT o.date, od.id_product, SUM(od.product_quantity) AS `total quantity` FROM `order` o INNER JOIN order_detail od ON o.id_order = od.id_order GROUP BY o.date, od.id_product ORDER BY o.date DESC, od.id_product;
大数据量优化(针对25万条记录)
为避免全表扫描、提升查询效率,需添加以下联合索引:
- 给
order表创建日期与订单ID的联合索引:CREATE INDEX idx_order_date_id ON `order`(date, id_order); - 给
order_detail表创建订单ID与产品ID的联合索引:CREATE INDEX idx_orderdetail_order_product ON order_detail(id_order, id_product);
这些索引能让MySQL快速定位关联数据,大幅缩短查询耗时。
补充说明
注:你提供的预期结果存在数据矛盾(例如08/11/2022的C产品实际总销量应为3+8+7=18,但示例中显示为3),推测是示例笔误,上述查询会返回符合逻辑的正确统计结果。
内容的提问来源于stack exchange,提问作者Donato Grieco
相关产品推荐
相关产品推荐

