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

如何获取指定时段内由多名不同客服处理的通话记录

问题描述

我需要查询指定时间范围内,由两名及以上不同客服代表处理的所有通话。当前使用HAVING COUNT语句可筛选出部分结果,但会包含同一客服多次参与同一场通话的情况,需过滤此类结果,仅保留由不同客服处理的通话。

当前查询语句
SELECT * 
FROM call_legs
WHERE call_id IN (
SELECT DISTINCT(call_id)
FROM call_legs
    WHERE call_id IN (
        SELECT 
        call_id
        FROM call_legs
        WHERE 
            from_name IN (SELECT name FROM directory WHERE include = 'Yes' AND discription = 'Customer Care')
            AND call_legs.start_time >= '10/09/2022 12:00 AM' AND call_legs.start_time <= '10/16/2022 11:59 PM' 
            AND result = 'Call connected'
            GROUP BY call_id
            HAVING COUNT (from_name) > 1
    )
)
AND from_name IN (SELECT name FROM directory WHERE include = 'Yes' AND discription = 'Customer Care')
AND result = 'Call connected'
ORDER BY start_time ASC
解决方案

要过滤掉同一客服多次参与的通话,核心是统计不同客服的数量而非总参与次数。将原查询中的COUNT(from_name)替换为COUNT(DISTINCT from_name)即可实现需求,同时可以简化嵌套查询结构,避免冗余:

SELECT cl.*
FROM call_legs cl
WHERE cl.call_id IN (
    SELECT call_id
    FROM call_legs
    WHERE from_name IN (SELECT name FROM directory WHERE include = 'Yes' AND description = 'Customer Care')
      AND start_time >= '10/09/2022 00:00:00' 
      AND start_time <= '10/16/2022 23:59:59'
      AND result = 'Call connected'
    GROUP BY call_id
    HAVING COUNT(DISTINCT from_name) >= 2
)
AND cl.from_name IN (SELECT name FROM directory WHERE include = 'Yes' AND description = 'Customer Care')
AND cl.result = 'Call connected'
ORDER BY cl.start_time ASC;

关键修改点:

  • 使用COUNT(DISTINCT from_name)替代COUNT(from_name),确保统计的是不同客服的数量而非总记录数
  • 简化嵌套查询层级,去掉不必要的DISTINCT(call_id)外层查询(GROUP BY已经保证call_id唯一)
  • 统一时间格式为更标准的YYYY-MM-DD HH:MM:SS(如果数据库支持,可避免格式解析问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:45:34