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

Oracle SQL按颜色统计2010、2016年后苹果销量结果不符合预期

问题诊断与解决方案

原代码问题点

  • 逻辑顺序错误:将日期条件判断放在了聚合求和之后,先对同颜色所有销量求和,再判断单条记录的日期是否符合要求,会导致同颜色产生多条不同结果的记录,空值行也因此产生
  • 窗口函数+distinct的组合不合理:该需求属于按维度统计多条件指标的场景,不需要用窗口函数去重,反而会增加额外的计算开销和结果冗余

修正后的代码

SELECT 
  Color,
  SUM(CASE WHEN WHN >= TO_DATE('01/01/2010','mm/dd/yyyy') THEN Apple ELSE 0 END) AS tot_2010,
  SUM(CASE WHEN WHN >= TO_DATE('01/01/2016','mm/dd/yyyy') THEN Apple ELSE 0 END) AS tot_2016
FROM temp
GROUP BY Color;

逻辑说明

  • 先用GROUP BY Color将所有销售记录按苹果颜色分组,每组对应一种颜色的全量销售数据
  • 聚合函数SUM内部嵌套条件判断,仅对符合对应日期区间的销量进行累加,不符合的记录贡献值为0,最终输出的就是对应区间的总销量
  • 每种颜色仅输出一条记录,完全匹配预期结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:54:07