【问题标题】:calculate subscriber’s frequency of calls SQL Netezza计算订阅者的调用频率 SQL Netezza
【发布时间】:2020-03-14 15:21:33
【问题描述】:

我正在处理一份包含数十亿行的报告中的电信公司的 CDR(呼叫详细信息记录)数据, 我要求一个 SQL 查询,让我可以分析用户拨打特定 MSISDN 的频率,以指导应该向哪些用户提供家庭交易或确定他们网络中有多少同行拥有竞争对手的服务。

我的表格有很多细节,我得到了有用的细节,可以帮助我获得这种洞察力, 该表包含:

  • PRI_IDENTITY(用户主叫号码)
  • RECIPIENT_NUMBER(被叫号码)
  • 时间戳(通话日期/时间)
  • Call_Duration(以秒为单位)
  • CALLED_HOME_NETWORK_CODE(收件人号码网络代码)
SELECT
  PRI_IDENTITY, RECIPIENT_NUMBER, 
  TO_timestamp(CUST_LOCAL_START_DATE,'yyyyMMddHH24miss')::Date AS Call_Date,
  ACTUAL_USAGE AS Call_Duration,
  CALLED_HOME_NETWORK_CODE
FROM TBL.CDR

样本数据

我需要弄清楚的输出如下:

  • 年份
  • PRI_IDENTITY
  • CALLED_HOME_NETWORK_CODE
  • 频率 5(当天 PRI_IDENTITY 调用 5 次的 RECIPIENT_NUMBERS 的计数)
  • 频率 10(PRI_IDENTITY 一天调用 10 次的 RECIPIENT_NUMBERS 的计数)
  • 频率 15(PRI_IDENTITY 一天调用 15 次的 RECIPIENT_NUMBERS 的计数)
  • 频率 20(PRI_IDENTITY 一天调用 20 次的 RECIPIENT_NUMBERS 的计数)
    • 频率超过 20(PRI_IDENTITY 一天调用超过 20 次的 RECIPIENT_NUMBERS 个计数)

提示:图片上的示例数据中的 PRI_IDENTITY 和 RECIPIENT_NUMBERS 在真实数据中是完整的,由于隐私问题,我无法在线分享全部信息

【问题讨论】:

  • 在哪一天?您正在按月进行总结。
  • 不是特定的一天,而是我们使用 PRI_IDENTITY 调用 RECIPIENT_NUMBERS 5 次或 10 次等的年/月的每一天...

标签: sql bigdata netezza cdr


【解决方案1】:

我假设您的意思是 每月 表示呼叫频率,而不是 每天。无论如何,您需要两个级别的聚合:

select yyyymm, PRI_IDENTITY, CALLED_HOME_NETWORK_CODE,
       sum(case when cnt >= 5 then 1 else 0 end) as cnt_5,
       sum(case when cnt >= 10 then 1 else 0 end) as cnt_10,
       . . .
from (select date_trunc('month', call_date) as yyyymm,
             PRI_IDENTITY ,
             CALLED_HOME_NETWORK_CODE, 
             RECIPIENT_NUMBER, count(*) as cnt
      from t
      group by date_trunc('month', call_date) as yyyymm,
               PRI_IDENTITY, CALLED_HOME_NETWORK_CODE,  RECIPIENT_NUMBER
     ) x
group by yyyymm, PRI_IDENTITY, CALLED_HOME_NETWORK_CODE;

【讨论】:

  • 让我尝试一下并应用此查询,但由于数据量非常大,需要大约 30 分钟才能给出结果。
  • 如果我指的是每天的呼叫频率,例如:对于 Jan,我需要 PRI_IDENTITY,他们每天 每天在 1 月和 2 月 2 月期间每天 每天 拨打 RECIPIENT_NUMBER 5 次等等...我应该修改什么
  • @AhmedMohammedAbdelKader 。 . .“5”组实际上是 1 月份的 5 * 31 次通话。
猜你喜欢
  • 2019-01-03
  • 2021-10-29
  • 2020-10-02
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多