You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何识别单日Tier 2登录坐席并将其从Extended Worktime统计报表中排除

解决方案

完全可以通过SQL查询实现你的两个需求,无需调整数据导入逻辑,具体实现如下:

需求1:识别同一日期下仅单行出现的数据行

使用窗口函数按AgentID+登录日期分组统计记录数,过滤出计数为1的行即可,示例代码:

SELECT * FROM (
    SELECT 
        *,
        COUNT(*) OVER (PARTITION BY AgentID, DATE(LoginDateTime)) AS daily_record_cnt
    FROM 你的表名
) t
WHERE daily_record_cnt = 1

不同数据库的日期转换函数可对应调整:SQL Server用CAST(LoginDateTime AS DATE)、Oracle用TRUNC(LoginDateTime)。

需求2:排除当日归属Tier2的坐席,统计剩余坐席的Extended Worktime总时长

实现思路

  • 第一步:提取每日所有登录类型(Type='L')的记录,得到当日每个坐席ID对应的所属组别(ClassName),这部分记录的ClassName是完整填充的。
  • 第二步:将上述结果作为公共表达式(CTE),和原表通过AgentID、登录日期关联,给原表所有行补全对应坐席的当日所属组别。
  • 第三步:过滤掉组别为Tier 2的所有记录,统计剩余记录中BreakReason='Extended Worktime'的Duration总和即可。

示例代码

WITH agent_daily_class AS (
    SELECT 
        AgentID,
        DATE(LoginDateTime) AS login_date,
        ClassName
    FROM 你的表名
    WHERE Type = 'L'
)
SELECT 
    a.AgentID,
    a.Agent_First_Name,
    SUM(a.Duration) AS total_extended_worktime
FROM 你的表名 a
JOIN agent_daily_class c 
    ON a.AgentID = c.AgentID 
    AND DATE(a.LoginDateTime) = c.login_date
WHERE 
    c.ClassName != 'Tier 2'
    AND a.BreakReason = 'Extended Worktime'
GROUP BY a.AgentID, a.Agent_First_Name

测试验证

基于你提供的样例数据表运行上述代码,会自动过滤掉归属Tier2的John的所有记录,仅统计Dave的Extended Worktime总时长为142+112=254,符合预期。

样例数据表

ROWIDAgent_First_NameTypeAgentIDExnoDurationLoginDateTimeBreakReasonClassClassName
61272DaveL1003382017/11/2021 08:00:2410Tier 1
61273DaveW10014217/11/2021 08:07:24Extended Worktime0
61274DaveW10011217/11/2021 08:15:24Extended Worktime0
61275JohnL3204201017/11/2021 09:04:249Tier 2
61276JohnW32010017/11/2021 10:13:24Extended Worktime0
61277JohnW3208517/11/2021 11:15:24Extended Worktime0

内容的提问来源于stack exchange,提问作者Matt Walmsley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:24:03