我想计算同时发生的最大聊天数和客服代理数。我有一个表,其中每一行都是一个唯一的聊天会话。以下相关栏目可用:
chatsessionID
(不同计数给出聊天数量)agentID
sessionstart
(时间戳 YYYYMMDD-HHMMSS)sessionend
(时间戳 YYYYMMDD-HHMMSS)我仅根据
sessionstart
时间戳尝试了以下查询。它产生了我预期的结果,但不是我需要的:
SELECT
sessionstart,
COUNT(DISTINCT chatsessionID) AS Chats,
COUNT(DISTINCT agentID) AS Agents,
FROM source
GROUP BY 1
ORDER BY 2 DESC
这产生了在给定 sessionstart
时间戳处
开始的聊天和代理的数量。它没有说明在给定时间戳有多少聊天和代理处于活动状态/正在处理/正在处理
chatsession
。我正在寻找一种方法来丰富这种洞察力,以便我知道有多少聊天和代理同时处于活动状态。
假设 3 次聊天于 13:00 开始,2 次聊天于 12:55 开始,于 13:05 结束。目前在我上面的查询中,时间戳 13:00 返回 3 个聊天。但我需要它返回 5,因为 3 在 13:00 开始,2 在 13:00 活跃,因为这两个在 13:00 之前开始,在 13:00 之后结束。
假设您正在查找每个
agentID
正在处理多少个其他并发聊天,则对同一代理上的同一个表的左连接应该足以实现此目的:chatsessionID
但是,如果您正在寻找有多少代理正在处理相同的问题
SELECT
a.agentID,
a.chatsessionID,
a.sessionstart,
COUNT(DISTINCT b.chatsessionID) AS TotalConcurrentChats
FROM source a
LEFT JOIN source b
ON a.agentID = b.agentID
AND b.seasonstart >= a.seasonstart
AND b.seasonend <= a.seasonend
GROUP BY 1
ORDER BY 2 DESC
,简单的分组应该得到:
chatsessionID