计算 BigQuery SQL 中的最大聊天会话并发数

问题描述 投票:0回答:1

我想计算同时发生的最大聊天数和客服代理数。我有一个表,其中每一行都是一个唯一的聊天会话。以下相关栏目可用:

  • 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 之后结束。

sql google-bigquery concurrency timestamp
1个回答
0
投票

假设您正在查找每个

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

© www.soinside.com 2019 - 2024. All rights reserved.