我有显示客户来电的数据。我有客户号码、电话号码(1 个客户可以有多个)、每个语音呼叫的日期记录以及呼叫持续时间的列。表看起来位于示例下方。
CusID | PhoneNum | Date | Duration
20111 43576233 20.01.2016-14:00 00:10:12
20111 44498228 14.01.2016-15:30 00:05:12
20112 43898983 14.01.2016-15:30
我想要的是在应答之前计算每个号码的呼叫尝试次数(持续时间> 0)。这样我就可以估计平均应该拨打多少次才能联系到客户或电话号码。它基本上应该在 min(Date) 之前计算每个电话号码的任何列,其中持续时间 >0。
SELECT Phone, Min(Date) FROM XX WHERE Duration IS NOT NULL GROUP BY Phone --
我认为这应该给我一个时间限制,直到我应该计算呼叫次数。我不知道如何完成剩下的工作
编辑-我将添加一个示例
结果应该只计算第 5 行,因为这是第一次联系客户之前的呼叫。所以结果表应该是这样的:
您的第一步是有效的:
SELECT
CusID
,PhoneNum
,MIN(Date) AS MinDate
FROM XX
WHERE Duration IS NOT NULL
GROUP BY CusID, PhoneNum
这为您提供了每行一行PhoneNum
以及第一次成功调用的日期。
现在将其连接到原始表,并仅保留那些具有先前日期的行(每个PhoneNum
)。分组依据PhoneNum
再次计数。连接应该是LEFT JOIN
使第一次尝试回答的数字的行计数为零。
WITH
CTE
AS
(
SELECT
CusID
,PhoneNum
,MIN(Date) AS MinDate
FROM XX
WHERE Duration IS NOT NULL
GROUP BY CusID, PhoneNum
)
SELECT
CusID
,PhoneNum
,COUNT(XX.PhoneNum) AS Count
FROM
CTE
LEFT JOIN XX
ON XX.PhoneNum = CTE.PhoneNum
AND XX.Date < CTE.MinDate
GROUP BY CusID, PhoneNum
;
如果某个号码从未被应答,则它根本不会包含在结果集中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)