获取第一次和第二次调用之间的平均时间(postgresql)
数据挖掘
sql
时间
不同之处
2022-02-27 10:49:37
1个回答
如果您有一个仅包含第一个呼叫详细信息的表格和另一个仅包含第二个呼叫详细信息的表格,您就可以加入它们,对吗?然后这两次将在不同的列中。您不必复制数据或拆分表来实现这一点。它可以通过在查询中两次引用表并使用自连接来在逻辑上完成。
select
AVG(second_call.time_of_call - first_call.time_of_call)
from TheTable as first_call
inner join TheTable as second_call
on first_call.customer_id = second_call.customer_id
where first_call.call_attempt = 1
and second_call.call_attempt = 2;
从逻辑上讲,我将表分成两个,一个称为 first_call,一个称为 second_call。前者仅包含 call_attempt 1 的行,而后者仅包含 call_attempt 2 的行。这在 WHERE 子句中强制执行。我假设每个客户的每个呼叫尝试号码只有一行。
然后我在 customer_id 上加入这些表。我使用内部联接,因此只有同时进行了第一次第二次呼叫的客户才会被处理。对数据进行剖析以了解这如何影响计算质量是一个好主意。
您可能希望更改 AVG() 中的减法以获得所需的格式。
如果运行时性能很关键,则使用窗口函数而不是自连接可能会更高效,具体取决于存在的索引和基数。
其它你可能感兴趣的问题
