我有数据显示客户的电话号码。我有客户号码、电话号码(一个客户可以有多个)、每个语音呼叫的日期记录和呼叫持续时间列表。表似乎在下面的例子中。3 z! U" }/ N$ z4 L+ w# X4 |
CusID | PhoneNum | Date | Duration20111年 435762333 20001111年 .01.2016-14:00 1110:1220:10:120111 449828 144498.01.2016-15:30 00:05:1220112 43898983 14.01.2016-15:30我想要的是在应答之前(持续时间> 0)计算每个号码的呼叫尝试次数。这样,我就可以估计联系客户或电话号码应该打多少次电话。它基本上应该计算持续时间> 5 f- V; u9 r1 Q8 q& W1 w V: g0的min(Date)以前每个电话号码的任何列。/ B% \4 A! |/ }
SELECT Phone,Min(Date) FROM XX WHERE Duration IS NOT NULL GROUP BY Phone --我认为这应该给我时间限制,直到我计算电话次数。我不知道如何完成剩下的工作4 t' f8 D" d3 t1 }" ?& K
# A7 ?8 b N5 a/ x- e解决方案: $ Q8 F5 u/ S- g% Z& M7 D8 W6 J8 } 你的第一步是有效的: 0 B0 H* q0 R+ U8 n SELECT CusID PhoneNum MIN(Date) AS MinDate FROM XX WHERE Duration IS NOT NULL GROUP BY CusID,PhoneNum这样,你就会得到每一行,PhoneNum并包括第一个成功呼叫的日期。 " g- ^4 x7 u: j8 F: @* l现在,将此表添加到原始表中,只保留以前的日期(每个表)PhoneNum)。PhoneNum再分组计数。LEFTJOIN第一次尝试回答的数字应该连接到零计数线。# Z7 K* i4 ]9 k5 Z+ F
WITHCTEAS( 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 CountFROM CTE LEFT JOIN XX ON XX.PhoneNum = CTE.PhoneNum AND XX.Date 若从未回答过任何数字,则该数字将完全不包含在结果集中。