问题描述
CALL_ID | OPERATOR_ID | CALL_START | CALL_END | NOTES | TYPE
========+=============+=======================+=======================+=======+======
101 | 3000 | '2020-12-12 08:00:00' | '2020-12-12 08:10:00' | ... | ...
102 | 3000 | '2020-12-12 08:08:00' | '2020-12-12 08:20:00' | ... | ...
CALL_ID 102 在 CALL_ID 101 结束之前已经开始(对于相同的 operator_ID)。
我需要找到 CALL_END > CALL_START 的调用(在同一操作员的下一行)并且我卡住了。
解决方法
通过 OPERATOR_ID 加入针对自身的 CALLS 表,查找在任何“左手”呼叫记录的 CALL_START 和 CALL_END 之间具有 CALL_START 的“右手”呼叫记录:
SELECT c.operator_id,c.call_id,c.call_start,c.call_end,other.call_id,other.call_start
FROM calls c
INNER JOIN
calls other
ON c.operator_id = other.operator_id
WHERE c.call_id != other.call_id
AND
other.call_start BETWEEN c.call_start AND c.call_end