2.5 KiB
2.5 KiB
当天应该换单数统计差异修复计划
差异现象
- 明细查询统计考核时间为5月1日的订单:6951条
- 汇总SQL统计5月1日的「当天应该换单数」:5895条
- 差值:1056条,说明汇总逻辑多了限制条件导致少统计
根因分析(最终定位)
用户确认过滤条件调整无效,问题根源在联表逻辑和CTE数据完整性:
- OrderAssessment关联FormFirstScan问题:左关联FormFirstScan时,若交接单无扫描记录,FirstScanTime_UTC5为null,导致考核基准时间计算异常
- DistinctDates日期不全:AllDates只取了ReceiptDate、LabelRetrievedDate、FirstSuccessDate和扫描日期,没有包含考核时间的日期,导致考核时间的日期不在DistinctDates里,Cross JOIN时丢失匹配
- OrderFullInfo数据丢失:OrderAssessment和OrderScanStatus左关联时,有没有NeutralWaybillNumber匹配不上的情况,导致考核时间丢失
修复方案
正确统计规则(用户明确)
「当天应该换单数」= 满足以下所有条件的订单总和:
- 有考核时间(AssessmentTime IS NOT NULL)
- 标签率≥80%
- 满足以下两个条件任意一个: a. 考核基准日期 = 统计当天日期 b. 考核截止日期 = 统计当天日期
最终统计结果 = 明细中考核基准日期是当天的订单数 + 考核截止日期是当天的订单数
执行步骤
- 修复DistinctDates日期不全问题:在AllDates中增加考核时间的日期,确保所有考核日期都被包含
- 调整汇总SQL的「当天应该换单数」统计逻辑:
- 条件改为:
(DATE(ofi.AssessmentBaseTime) = dd.日期 OR DATE(ofi.AssessmentTime) = dd.日期) - 保留
ofi.AssessmentTime IS NOT NULL和ofi.LabelRate >= 0.8条件
- 条件改为:
- 同步更新明细查询的验证注释,匹配最新逻辑
- 验证5月1日数据:汇总统计结果 = 明细中考核基准日期是5月1日的count + 考核截止日期是5月1日的count
验证方法
修复后:
- 运行汇总SQL,获取5月1日的「当天应该换单数」
- 运行明细SQL分别统计:
a. 考核基准日期是5月1日的订单数:
WHERE DATE(oa.考核基准时间_UTC5) = '2026-05-01' AND oa.交接单标签率 >= 0.8 AND oa.考核时间 IS NOT NULLb. 考核截止日期是5月1日的订单数:WHERE DATE(oa.考核时间) = '2026-05-01' AND oa.交接单标签率 >= 0.8 AND oa.考核时间 IS NOT NULL - 汇总结果 = a + b,数据完全一致则修复完成