需求背景:
录音系统内每天会产生许多投诉录音,这些录音需要分配给专门的人员负责跟听处理,每天录音明细中每个客户通话次数可能是多次,每通电话通话时长不定。
需求内容:
- 每天把前一天的全部通话录音分给3个人;
- 同一个客户的录音必须分配给同一个人;
- 每个人分到的总录音时长相等(大致均分即可);
解决方案:
根据需求内容将跟听人员姓名更新到 tel_number_record 表的 electro 字段内
tel_number_record 表:

call_log 表:

UPDATE tel_number_record a, -- 当天客户清单表 (SELECT a1.tel_number,CASE WHEN (a1.number%6) = 0 THEN '张三' WHEN (a1.number%6) = 1 THEN '李四' WHEN (a1.number%6) = 2 THEN '王五' WHEN (a1.number%6) = 3 THEN '王五' WHEN (a1.number%6) = 4 THEN '李四' ELSE '张三' -- 均分需要S形分配 END as electro from ( SELECT a.tel_number, a.sum_call_duration, @i := @i + 1 AS number FROM (SELECT tel_number, sum(call_duration) sum_call_duration FROM `call_log` -- 录音明细表 WHERE creat_date > '2222-02-02' and creat_date < '2222-02-03' GROUP BY tel_number ORDER BY sum(call_duration) desc -- 通话时长倒序 ) a, -- 顺带附加随机分配逻辑(随机数*分配人数) (SELECT @i := FLOOR((RAND() * 2))) b ) a1 ) b set a.electro = b.electro WHERE a.tel_number = b.tel_number;
浙公网安备 33010602011771号