回答

收藏

sql计数/求和直到另一列中的特定日期的调用数

技术问答 技术问答 107 人阅读 | 0 人回复 | 2023-09-12

我有数据显示客户的电话号码。我有客户号码、电话号码(一个客户可以有多个)、每个语音呼叫的日期记录和呼叫持续时间列表。表似乎在下面的例子中。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 若从未回答过任何数字,则该数字将完全不包含在结果集中。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则