You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条SQL语句计算指定月份每日销售额与退货额的差值?

当然可以通过单条SQL语句实现这个需求!我们可以利用**左连接(LEFT JOIN)**将销售表和退货表的统计结果按日期关联,再结合COALESCE函数处理无退货记录的情况,最终计算出每日的销售净额。

实现的SQL语句

SELECT 
    s.valDay,
    s.valTotal - COALESCE(r.valTotal, 0) AS valTotal
FROM (
    -- 子查询:统计12月每日销售总额
    SELECT strftime('%m/%d', Date) as valDay, SUM(TotalPrice) as valTotal 
    FROM Sales 
    WHERE strftime('%m', Date) ='12' 
    GROUP BY valDay
) s
-- 左连接退货统计结果,确保所有销售日期都被保留
LEFT JOIN (
    -- 子查询:统计12月每日退货总额
    SELECT strftime('%m/%d', Date) as valDay, SUM(TotalPrice) as valTotal 
    FROM return 
    WHERE strftime('%m', Date) ='12' 
    GROUP BY valDay
) r ON s.valDay = r.valDay
ORDER BY s.valDay;

关键逻辑说明

  • 子查询封装:把你原本的两个统计语句分别封装为子查询s(销售数据)和r(退货数据),让主逻辑更清晰。
  • LEFT JOIN的作用:以销售统计的日期为基准,保证所有有销售记录的日期都会出现在结果中,哪怕当天没有退货。
  • COALESCE处理空值:当某日期没有退货记录时,r.valTotal会是NULL,用COALESCE(r.valTotal, 0)把空值替换为0,这样减法运算就能正常得到销售总额本身。
  • 排序保证顺序:最后按valDay排序,让结果和你预期的日期顺序一致。

执行结果

执行后会得到符合需求的每日净额:

valDayvalTotal
12/0140.0
12/0250.0
12/0450.0
12/0520.0
12/06160.0
12/0730.0
12/0860.0
12/0950.0

内容的提问来源于stack exchange,提问作者dins88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:41:23