如何用SQL按日分组统计销售总额:单价×销量扣除折扣后汇总
按日汇总销售总额SQL调整方案
原有语句的错误点
- 折扣计算逻辑错误:原公式实际计算结果完全偏离实际折扣额,单条记录的正确折后金额应为
item_sale_price * item_sale_qty * (1 - discount_percentage / 100) - 缺少聚合函数:使用
GROUP BY按日期分组时,没有搭配SUM()对单日所有明细的销售额做汇总,只会返回分组内第一条记录的计算结果 - 分组逻辑存在隐患:仅用
DAY(sale_date)分组会导致跨月查询时,不同月份的相同日期被合并统计,应该用DATE(sale_date)提取完整日期分组
调整后正确语句
SELECT DATE(sale_date) AS sale_date, SUM(item_sale_price * item_sale_qty * (1 - discount_percentage / 100)) AS total_per_day FROM sales_items WHERE sale_date BETWEEN '$startdate' AND '$enddate' GROUP BY DATE(sale_date)
样例数据计算验证
按上述逻辑计算你提供的样例数据,结果如下:
- 2021-06-01:
250000 * 5 * (1 - 10/100) = 1125000 - 2021-06-02:
(100000 * 1 * (1 - 0/100)) + (25000 * 2 * (1 - 5/100)) = 147500
内容的提问来源于stack exchange,提问作者Andres Carvajal
相关产品推荐
相关产品推荐

