我试图找出在 30 分钟内与同一客户进行过互动的所有代理,因为他们可能会感到困扰,不应该经常打电话给他们。
我不太确定如何解决这个问题,因为案例语句最好在一行中工作。也许循环会遍历行(使用redshift)?
我试图找出在 30 分钟内与同一客户进行过互动的所有代理,因为他们可能会感到困扰,不应该经常打电话给他们。
我不太确定如何解决这个问题,因为案例语句最好在一行中工作。也许循环会遍历行(使用redshift)?
提示:您可以使用LAG()函数查找上一次调用的时间戳。
完整答案:
WITH interactions AS (
SELECT
agent,
customer,
call_time,
LAG(call_time) OVER (PARTITION BY agent, customer ORDER BY call_time) AS prev_call_time
FROM
orders
)
SELECT DISTINCT
agent,
customer
FROM
interactions
WHERE
DATEADD(MINUTE, prev_call_time, 30) >= call_time
;