SQL查询:按date列去重后求balance列总和的实现问题咨询
核心实现逻辑
你需要先对date和balance两列做联合去重,确保每组相同日期、相同余额的记录只保留1条,再对处理后的数据做求和计算。
方案1:输出符合条件的去重后明细记录
如果需要输出每个日期对应的去重后余额,语句如下:
select distinct date, balance from `table` where date between '起始日期' and '结束日期'
方案2:输出去重后所有余额的总求和结果
如果最终只需要一个全局求和数值,先通过子查询完成去重再聚合即可:
select sum(balance) as total_balance from ( select distinct date, balance from `table` where date between '起始日期' and '结束日期' ) as deduplicated_data
方案3:按日期维度输出每个日期的去重后余额总和
如果需要按日期分组,展示每个日期下所有去重后余额的求和结果,语句如下:
select date, sum(balance) as date_total_balance from ( select distinct date, balance from `table` where date between '起始日期' and '结束日期' ) as deduplicated_data group by date
原语句问题说明
你之前直接按date分组后求和的逻辑,会把同一个日期下所有重复的balance值都累加多次,所以结果不符合预期。先做date+balance的联合去重步骤,可以保证每个唯一的(date, balance)组合仅参与一次计算。
内容的提问来源于stack exchange,提问作者quodsolis
相关产品推荐
相关产品推荐

