如何按人员统计Zendesk工单的SLA违反百分比?
按人员统计Zendesk工单SLA违反百分比实现思路
核心逻辑
对每个客服人员,计算违反SLA的工单数量占其总处理工单数量的比例,再转换为百分比格式。
实现步骤
第一步:分组统计基础数据
按assignee_name(人员名称)分组,分别统计每个人员的总工单量、违反SLA的工单量:- 总工单量:用
COUNT(*)统计每组的工单总数 - 违反工单量:用
SUM(CASE WHEN m.reply_time_in_minutes.[calendar] > 120 THEN 1 ELSE 0 END),把违反SLA的工单标记为1,求和得到违反总数
- 总工单量:用
第二步:计算违反百分比
用「违反工单量 ÷ 总工单量 × 100」得到百分比,为避免总工单量为0时出错,用NULLIF处理(比如NULLIF(COUNT(*), 0)),确保除法不会报错。
修改后的查询语句示例
SELECT assignee_name, COUNT(*) AS total_tickets, SUM(CASE WHEN m.reply_time_in_minutes.[calendar] > 120 THEN 1 ELSE 0 END) AS breached_tickets, ROUND( (SUM(CASE WHEN m.reply_time_in_minutes.[calendar] > 120 THEN 1 ELSE 0 END)::FLOAT / NULLIF(COUNT(*), 0)) * 100, 2 ) AS sla_breach_percentage FROM tickets t JOIN ticket_metrics m ON t.id = m.ticket_id WHERE date(t.created_at) BETWEEN 'MM/DD/YYYY' AND 'MM/DD/YYYY' AND t.assignee_name LIKE ('XXX%') GROUP BY assignee_name ORDER BY sla_breach_percentage DESC;
语句说明
ROUND(..., 2):把百分比保留2位小数,结果更整洁::FLOAT:确保除法结果为小数,避免整数除法只返回0或1的问题NULLIF(COUNT(*), 0):如果总工单量为0,返回NULL,避免出现除以0的错误ORDER BY sla_breach_percentage DESC:按违反百分比从高到低排序,便于快速查看情况
内容的提问来源于stack exchange,提问作者Arun Sunderraj
相关产品推荐
相关产品推荐

