Guest

Untitled

By: a guest on Feb 15th, 2012  |  syntax: SQL  |  size: 4.27 KB  |  hits: 43  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. INSERT INTO reporting.bts_client_report (system_date, client_date, provider_date, org_sub, dst_sub, cli_area_code, cli_destination, pro_area_code, pro_destination, sale_rate, purchase_rate, internal_area_code, country_code, country_name, num_calls, num_fas_calls, num_fb_calls, org_seconds, dst_seconds, num_seconds, income, cost)
  2. SELECT d.system_date,
  3.        d.client_date,
  4.        d.provider_date,
  5.        d.org_subscription,
  6.        d.dst_subscription,
  7.        d.cli_area_code,
  8.        d.cli_destination,
  9.        d.pro_area_code,
  10.        d.pro_destination,
  11.        d.sale_rate,
  12.        d.purchase_rate,
  13.        d.area_code,
  14.        COALESCE(ac.country_code, cc.country_code, npa.npa),
  15.        COALESCE(acc.country_name, cc.country_name, npa.TYPE),
  16.        d.num_calls,
  17.        d.num_fas_calls,
  18.        d.num_fb_calls,
  19.        d.org_seconds,
  20.        d.dst_seconds,
  21.        d.num_seconds,
  22.        d.income,
  23.        d.cost
  24. FROM (
  25. SELECT start_time::DATE AS system_date,
  26.        COALESCE((start_time AT TIME ZONE a.account_timezone)::DATE, start_time::DATE) AS client_date,
  27.        COALESCE((start_time AT TIME ZONE b.account_timezone)::DATE, start_time::DATE) AS provider_date,
  28.        org_subscription,
  29.        dst_subscription,
  30.        TRIM(SUBSTRING(org_params
  31.                       FROM $1
  32.                       FOR $2)) AS cli_area_code,
  33.             COALESCE(org_destination, -1) AS cli_destination,
  34.             TRIM(SUBSTRING(dst_params
  35.                            FROM $3
  36.                            FOR $4)) AS pro_area_code, COALESCE(dst_destination, -1) AS pro_destination, sale_rate, purchase_rate, area_code, COUNT(NULLIF(duration, 0)) AS num_calls, SUM(CASE WHEN duration > 0
  37.                                                                                                                                                                                           AND duration < 15 THEN 1 ELSE 0 END) AS num_fas_calls, SUM(CASE WHEN duration = 0
  38.                                                                                                                                                                                                                                                      AND release_cause = 34 THEN 1 ELSE 0 END) AS num_fb_calls, SUM(org_duration) AS org_seconds, SUM(dst_duration) AS dst_seconds, SUM(duration) AS num_seconds, SUM(sale_price) AS income, SUM(purchase_price) AS cost
  39.                  FROM bts_cdr c, bts_subscription s, bts_account a, bts_subscription t, bts_account b
  40.                  WHERE start_time >= $5::DATE
  41.                    AND start_time < $6::DATE + INTERVAL '1 day'
  42.                    AND billing_code_id % 2 = 1
  43.                    AND billing_code_id & 2048 = 0
  44.                    AND (call_direction = 1
  45.                         OR org_subscription IN (2178, 2161, 130, 1105, 35))
  46.                    AND (duration > 0
  47.                         OR org_duration > 0
  48.                         OR dst_duration > 0)
  49.                    AND s.subscription_id = c.org_subscription
  50.                    AND t.subscription_id = c.dst_subscription
  51.                    AND a.account_id = s.account_id
  52.                    AND b.account_id = t.account_id
  53.                  GROUP BY 1, 2, 3, org_subscription, dst_subscription, 6, 7, 8, 9, sale_rate, purchase_rate, area_code) AS d
  54. LEFT OUTER JOIN bts_area_code ac ON ((ac.cancelled IS NULL
  55.                                       OR ac.cancelled = '10000-01-01')
  56.                                      AND ac.effective <= d.system_date
  57.                                      AND (ac.expired IS NULL
  58.                                           OR ac.expired > d.system_date)
  59.                                      AND ac.area_code = d.area_code)
  60. LEFT OUTER JOIN bts_country_code cc ON (cc.country_code = d.area_code)
  61. LEFT OUTER JOIN bts_country_code acc ON (acc.country_code = ac.country_code)
  62. LEFT OUTER JOIN
  63.   (SELECT '1' || npa AS npa, TYPE
  64.    FROM bts_npa) npa ON (npa = d.area_code), bts_subscription c,
  65.                                              bts_account a,
  66.                                              bts_subscription p,
  67.                                              bts_account b
  68. WHERE c.subscription_id = d.org_subscription
  69.   AND a.account_id = c.account_id
  70.   AND p.subscription_id = d.dst_subscription
  71.   AND b.account_id = p.account_id