从呼叫尝试表

时间:2017-05-17 10:10:25

标签: sql amazon-web-services

我在REDSHIFT中有一张收集验证电话cdrs的表:

name      | callid       | timestamp         | Anumber       | BNumber | Duration | Status
customerA |1631c40d-e397 |2017/01/01 03:01:00| +390123456789 | +440123456700 | 0 | aborted
customerA |8a12ca23-8728 |2017/01/01 03:02:00| +390123456789 | +440123456701 | 0 | aborted
customerB |54739440-c297 |2017/01/01 03:03:00| +440123456755 | +440123456780 | 0 | aborted
customerA |87e01f74-ce9e |2017/01/01 03:03:01| +390123456789 | +440123456700 | 1 | success
customerB |54739440-c297 |2017/01/01 03:03:02| +440123456755 | +440123456123 | 0 | aborted
customerB |1d192eb7-01b0 |2017/01/01 03:03:03| +440123456755 | +440123456123 | 1 | success

每次尝试都是使用唯一callid进行的调用。 重新尝试意味着:我打电话给你,打电话失败,我再打电话给你,直到通话成功。因此,如果aumber调用bnumber 3次但只有第3次成功,那么我有3次尝试,其中2次重新尝试失败。

我需要得到:

    1. 全局已中止的呼叫数,已在不到5秒的时间内重新尝试
    1. 全球已中止的呼叫数量,已在不到20秒内重新尝试

e.g。 customerA于2017年4月1日至30日在全球范围内拨打了1000个电话.600个成功,300个失败,100个中止。 在这些(300 + 100)电话中,有多少人在不到5秒(太快)和20秒内重新尝试。

    1. 数字失败时重新尝试的次数/百分比

e.g。 说(300 + 100)个电话是200个人号码。 我想知道那些实际重试相同数字的人的百分比。 如果100个用户只试一次&失败了,剩下的100个用户(这里50%)在他们的号码未能通过验证的情况下尝试了3次。

对我来说,最重要的问题是customerA的call1 call2和call3没有以任何方式链接。因此,如果customerA使用numberA拨打电话到号码B并且它失败(中止或失败),那么他可以反复尝试,直到一个电话成功“#39;

我不是很难解释。希望现在更清楚一点。

结果应该是这样的

customer | aborted_calls | percentage_aborted_5s | percentage_aborted_20s
customerA | 300 | 20 | 40

我试图计算这样的尝试总结,但它没有计算同一次呼叫的所有尝试' (多次打电话的人数没有成功)

select a.anumber,a.bnumber, sum(stat) from
(
select anumber,bnumber,timestamp
,case when status=3 then 0 else 1 end stat --3 is aborted or failed
from mytable
 ) a
 inner join (select * from mytable
 )v 
 on a.anumber=v.anumber and a.bnumber=v.bnumber
 where  datediff(s,v.timestamp,a.timestamp)<=5
 group by a.anumber,a.bnumber

如果我取得了成功,那么计数应该从0开始。

0 个答案:

没有答案