Advertisement
Guest User

Untitled

a guest
Sep 28th, 2017
423
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 6.94 KB | None | 0 0
  1.  
  2. WITH new_solo AS (
  3. SELECT /*+ materialize */client_key, TRUNC(accept_date) AS solo_date FROM (
  4.   SELECT client_key, ACCEPT_DATE FROM krn_add_clients@xldr.bg d
  5.   WHERE CATEGORY_TYPE IN ('SB','SS','SF','SN','SG', 'SA')
  6.   AND status='P'
  7.   AND d.ACCEPT_DATE IN (SELECT MAX(dd.ACCEPT_DATE) FROM krn_add_clients@xldr.bg dd
  8.   WHERE dd.client_key=d.client_key
  9.   AND CATEGORY_TYPE IN ('SB','SS','SF','SN','SG', 'SA'))
  10. )
  11. WHERE TRUNC(accept_date) BETWEEN '11aug2017' AND '25aug2017'
  12. ),
  13. camps AS (
  14. SELECT /*+ materialize */ client_key, comment_sysdate, user_name, campaign_no AS camp_no
  15.  FROM krn_offers@xldr.bg
  16.   WHERE run_date > '11aug2017'
  17.   AND comment_main IS NOT NULL
  18. ),
  19.  
  20. digital_logins AS (
  21. SELECT /*+ materialize */ c.client_key, a.last_login, a.login_count FROM
  22.     (SELECT user_id, MAX(login_date) AS last_login,  COUNT(1) AS login_count FROM krn_auth_user_login_hist@xldr.bg
  23.     WHERE login_date > SYSDATE - 90
  24.     AND auth_channel_id IN ('RIB', 'EXPRESSONLINE', 'EXSPRESSONLINE', 'IMB-WEB', 'MOBILE')
  25.     GROUP BY user_id) a
  26. join
  27.     (SELECT id, client_id_cbs AS client_key FROM krn_auth_users@xldr.bg b join new_solo ON
  28.     new_solo.client_key = b.client_id_cbs) c
  29. ON a.user_id = c.id
  30. ),
  31.  
  32. mobile_logins AS (
  33. SELECT /*+ materialize */ c.client_key, a.last_login, a.login_count FROM
  34.     (SELECT user_id, MAX(login_date) AS last_login,  COUNT(1) AS login_count FROM krn_auth_user_login_hist@xldr.bg
  35.     WHERE login_date > SYSDATE - 90
  36.     AND auth_channel_id IN ('MOBILE')
  37.     GROUP BY user_id) a
  38. join
  39.     (SELECT id, client_id_cbs AS client_key FROM krn_auth_users@xldr.bg b join new_solo ON
  40.     new_solo.client_key = b.client_id_cbs) c
  41. ON a.user_id = c.id
  42. ),
  43.  
  44. plus AS (
  45. SELECT /*+ materialize*/ a.client_key, a.label_type, a.label_score
  46.  FROM krn_client_label_hist@xldr.bg a
  47. join new_solo b
  48.  ON a.client_key = b.client_key
  49. WHERE a.label_status = 'A'
  50.  AND end_date = '01jan4444'
  51. ),
  52.  
  53. amex AS (
  54. SELECT new_solo.client_key,
  55.        CASE WHEN x.client_key IS NULL THEN 'NO' ELSE 'YES' END AS AMEX
  56.   FROM new_solo
  57.   left join (SELECT DISTINCT client_key FROM sas.dmt_plc_cards@sas
  58.               WHERE  card_class = 'AMEX'
  59.              AND ( ((date_reg BETWEEN '11aug2017' AND SYSDATE) AND dep_reg LIKE '%SOLO%')
  60.                      OR
  61.                    ((date_act BETWEEN '11aug2017' AND SYSDATE) AND dep_act LIKE '%SOLO%')
  62.                                  )
  63.                         ) x
  64.     ON x.client_key = new_solo.client_key
  65. ),
  66.  
  67.  
  68. loans AS (
  69. SELECT new_solo.client_key,
  70.        CASE WHEN x.client_key IS NULL THEN 'NO' ELSE 'YES' END AS LOAN
  71.   FROM new_solo
  72.   left join (SELECT DISTINCT client_key
  73.                FROM sas.DMT_CREDIT_AGREEMENTS@sas a
  74.               WHERE a.date_start > '11aug2017'
  75.                 AND resp_branch LIKE '%SOLO%') x
  76.     ON x.client_key = new_solo.client_key
  77. ),
  78.  
  79. deposits AS (
  80. SELECT new_solo.client_key,
  81.        CASE WHEN x.client_key IS NULL THEN 'NO' ELSE 'YES' END AS DEPOSIT
  82.   FROM new_solo
  83.   left join (SELECT DISTINCT client_key
  84.                 FROM sas.dmt_deposits@sas
  85.              WHERE date_start > '11aug2017'
  86.               AND reg_branch LIKE '%SOLO%') x
  87.     ON x.client_key = new_solo.client_key
  88. )
  89. ,plc AS
  90. (SELECT client_key, COUNT(*) PLASTIC_CARD_CNT
  91.    FROM PLC_CARDS@XLDR.BG P
  92.   WHERE P.STATUS = 'W'
  93.     AND P.EXP_DATE >= TRUNC(SYSDATE, 'MM')
  94.   GROUP BY client_key
  95. )
  96.            
  97. ,UTIL AS
  98. (SELECT /*+MATERIALIZE */ TO_NUMBER(CLIENT_KEY) CLIENT_KEY
  99.        ,SUM(CASE WHEN UTIL > 1 THEN 1 ELSE 0 END) UTIL
  100.   FROM (
  101.         SELECT A.CLIENT_KEY
  102.               ,A.HIST_DATE
  103.               ,SUM(NVL(A.ENTRIES_COUNT,0)) UTIL
  104.           FROM GIORGIJAPARIDZE.DMT_ENTRIES@RBRISK A
  105.      LEFT JOIN asabashvili.all_mcc_2 B
  106.             ON CASE
  107.                  WHEN A.UTILITY_PAYMENT_TYPE IS NOT NULL THEN A.UTILITY_PAYMENT_TYPE
  108.                  WHEN A.TRANSACTION_TYPE     IS NOT NULL THEN A.TRANSACTION_TYPE
  109.                  WHEN A.MCC IS NOT NULL THEN TO_CHAR(A.MCC, 'fm0000')
  110.                  ELSE CONCAT(A.PROD_GROUP, A.ENTRY_TYPE)
  111.                END = B.MCC
  112.          WHERE HIST_DATE >= TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -2), 'YYYY/MM')
  113.            AND A.ENTRY_SIDE = 'D'
  114.            AND B.IND_RBRISK = 'Utilities'
  115.          GROUP BY A.CLIENT_KEY, A.HIST_DATE
  116.         )
  117. GROUP BY CLIENT_KEY
  118. )
  119.  
  120. ,DD AS
  121. (
  122.    SELECT /*+MATERIALIZE */ CLIENT_KEY, SUM(OPERATION_COUNT) DD_CNT
  123.      FROM GIORGIJAPARIDZE.DMT_SERVICES_HISTORY@RBRISK
  124.     WHERE SERVICE_TYPE = 'DD'
  125.       AND YEAR_MONTH >= TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY/MM')
  126.     GROUP BY CLIENT_KEY
  127. )
  128.  
  129. ,has_dd AS (SELECT /*+NO_INDEX(a)*/ DISTINCT a.client_key
  130.   FROM krn_clients@xldr.bg a
  131.   JOIN plc
  132.     ON a.client_key = plc.client_key
  133.    AND plc.PLASTIC_CARD_CNT > 0
  134.   JOIN DD
  135.     ON A.CLIENT_KEY = DD.CLIENT_KEY
  136.    AND DD_CNT > 0
  137.   JOIN UTIL
  138.     ON A.CLIENT_KEY = UTIL.CLIENT_KEY
  139.    AND UTIL > 0
  140. WHERE a.tran_status = 'A'
  141.    AND a.business = 'P01'
  142. )
  143. , expiring_cards AS (
  144.  SELECT new_solo.client_key FROM
  145.    (SELECT DISTINCT client_key FROM
  146.         sas.dmt_plc_cards@sas
  147.         WHERE status  = 'W'
  148.         AND date_close IS NULL
  149.         AND date_exp BETWEEN '01oct2017' AND '31oct2017'
  150.         AND valid_to = '01jan4444') a
  151.    join new_solo
  152.       ON a.client_key = new_solo.client_key
  153. )
  154. , expiring_deposits AS (
  155.  
  156. SELECT new_solo.client_key,
  157.        CASE WHEN x.client_key IS NULL THEN 'NO' ELSE 'YES' END AS HAS_EXPIRING_DEPOSIT
  158.   FROM new_solo
  159.   left join (SELECT DISTINCT client_key
  160.                 FROM sas.dmt_deposits@sas
  161.              WHERE date_end BETWEEN '01oct2017' AND '31oct2017'
  162.               AND date_end_real IS NULL) x
  163.     ON x.client_key = new_solo.client_key
  164.  
  165. )
  166.  
  167. SELECT new_solo.client_key,
  168.        camps.comment_sysdate AS camp_comment_sysdate,
  169.              camps.camp_no AS camp_no,
  170.              camps.user_name AS camp_user_name,
  171.              digital_logins.last_login AS digital_last_login,
  172.              digital_logins.login_count AS digital_login_count,
  173.              mobile_logins.last_login AS mobile_last_login,
  174.              mobile_logins.login_count AS mobile_login_count,
  175.              plus.label_type AS plus_label_type,
  176.              plus.label_score AS plus_label_score,
  177.              amex.amex,
  178.              loans.loan,
  179.              deposits.deposit,
  180.              CASE WHEN has_dd.client_key IS NOT NULL THEN 'YES' ELSE 'NO' END AS DD,
  181.              CASE WHEN expiring_cards.client_key IS NOT NULL THEN 'YES' ELSE 'NO' END AS has_expiring_card,
  182.              expiring_deposits.HAS_EXPIRING_DEPOSIT
  183.  FROM new_solo left join camps
  184.   ON new_solo.client_key = camps.client_key
  185.  left join digital_logins
  186.   ON new_solo.client_key = digital_logins.client_key
  187.  left join plus
  188.   ON new_solo.client_key = plus.client_key
  189.  left join mobile_logins
  190.   ON new_solo.client_key = mobile_logins.client_key
  191.  left join amex
  192.   ON new_solo.client_key = amex.client_key
  193.  left join loans
  194.   ON new_solo.client_key = loans.client_key
  195.  left join deposits
  196.   ON new_solo.client_key = deposits.client_key
  197.  left join has_dd
  198.   ON new_solo.client_key = has_dd.client_key
  199.  left join expiring_cards
  200.   ON new_solo.client_key = expiring_cards.client_key
  201.  left join expiring_deposits
  202.   ON new_solo.client_key = expiring_deposits.client_key
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement