求解2020年11月每日每小时作业审核数量的SQL查询问题
作业审核数量统计解决方案
一、event字段取值说明及统计范围建议
常规业务场景下三类event的含义和统计规则如下:
- decision:操作人员完成审核并给出最终判定结果,属于有效审核操作,默认必须纳入统计
- skip:操作人员直接跳过当前作业未执行审核操作,属于未完成操作,一般不纳入审核量统计
- transfer:操作人员将作业转交其他人员处理,不属于当前操作人完成的审核任务,一般不纳入统计
若业务规则要求所有触达作业的操作都计入审核量,可将三类event全部纳入,无特殊说明默认仅统计
event = 'decision'的有效记录。
二、原有查询问题点
你提供的现有查询存在两处可优化点:
- 未过滤event类型,会把skip、transfer这类非审核完成的操作计入统计,导致结果偏大
- 未对job_id去重,同一个作业如果产生多条操作记录会被重复计数,影响统计准确性
三、正确查询实现
场景1:计算每日平均每小时审核作业量(当前表无小时字段,按当日总审核量/24计算)
SELECT ds, COUNT(DISTINCT job_id) / 24 AS hourly_avg_review_count FROM job_data WHERE ds BETWEEN '2020-11-01' AND '2020-11-30' AND event = 'decision' -- 若需统计所有操作,删除该行即可 GROUP BY ds ORDER BY ds;
场景2:若后续表新增小时维度字段(如hour列),需统计逐小时实际审核量
SELECT ds, hour, COUNT(DISTINCT job_id) AS hourly_review_count FROM job_data WHERE ds BETWEEN '2020-11-01' AND '2020-11-30' AND event = 'decision' GROUP BY ds, hour ORDER BY ds, hour;
内容的提问来源于stack exchange,提问作者Chaudhari
相关产品推荐
相关产品推荐

