Advertisement
Makcimm

Untitled

Oct 21st, 2019
1,913
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. WITH filtr_calls AS ( --минимальный запрос со всеми фильтрами
  2. SELECT *
  3. FROM calls cls
  4. JOIN contacts ct
  5.         ON ct.id_contact = cls.fid_contact
  6. JOIN registries reg
  7.         ON reg.id_registry = ct.fid_registry
  8. JOIN d_script_scenarios dss
  9.         ON ct.fid_scenario = dss.id_scenario
  10.  
  11.  
  12. WHERE cls.start_time >= TO_TIMESTAMP( :i_init_time)
  13.     AND cls.start_time < TO_TIMESTAMP( :i_finish_time)
  14. --    AND (reg.id_registry = i_id_registry OR i_id_registry IS NULL)
  15.     AND reg.id_registry = NVL( TO_NUMBER( :i_id_registry), reg.id_registry)
  16.     AND reg.IS_HIDDEN = 0
  17.     AND (:i_id_scenario IS NULL AND dss.scenario_code IN ('multioffer', 'kk', 'auto', 'mail', 'approved')
  18.         OR :i_id_scenario = dss.scenario_code)
  19. )  
  20. , all_leg_63 AS (
  21.     SELECT
  22.         cli.session_id AS session_id_0
  23.         , gcl.*
  24.     FROM filtr_calls cli
  25.     LEFT JOIN
  26.          TABLE(nc_core.pkg_api.GET_CALL_LINKS(I_DATE_START => '21.10.2019 00:00:00', --Дата начала отбора
  27.                           I_DATE_END => '22.10.2019 00:00:00', --Дата окончания отбора
  28.                           I_PROJECTS => 'corebofs000080000lqp8ou9gjub5jvo, corebofs000080000m4fhpvb8ufva1ig, corebofs000080000m4fj8fk660t8sp0, corebofs000080000m5brscdaq1ucsr8, corebofs000080000m74g3a4e2vmsr9c',--Список необходимых проектов
  29.                           I_DIRECTION => NULL,--Список направлений
  30.                           I_PLATFORM => NULL,--Список платформ
  31.                           I_ABONENT => NULL--Список необходимых абонентов/операторов. Возможно использование символов % и _ для нечеткого поиска
  32. --                          I_SELECT_ABONENTS NUMBER DEFAULT 1,--Флаг фильтрации абонентов/опереторов переданных в I_ABONENT. 0 - исключать; 1 - выбрать только переданных в I_ABONENT
  33. --                          I_QUALITY_CONTROL NUMBER DEFAULT NULL
  34.                           ) --Флаг необходимости выгружать IVR оценки качества: 1 - только IVR оценки качества; 0 - исключить IVR оценки качества; NULL - не использовать фильтр
  35.         ) gcl
  36.     ON gcl.session_id = cli.session_id
  37. )
  38. --,nau_info_63 AS
  39. --(
  40.     SELECT
  41.         leg.session_id_0
  42. --        , naucrm62.intervaltosec(nvl(al.abonent_connected
  43. --                                              , al.abonent_ended) - dl.dialer_created)       AS answ_wait_time
  44.         , naucrm62.intervaltosec(NVL(leg.ivr_connected
  45.                                               , leg.ivr_ended) - leg.ivr_created)       AS answ_wait_time                                      
  46.         , CASE
  47.                 WHEN leg.operator_created IS NOT NULL
  48.                     THEN 'Распределён на оператора'
  49.                 WHEN leg.ivr_created IS NOT NULL
  50.                     THEN 'Потерян в очереди'
  51.                 ELSE 'Не распределялся в очередь'
  52.         END                                                                   AS to_oper_transfered
  53.         , CASE
  54.                 WHEN leg.operator_created IS NOT NULL
  55.                     THEN CASE
  56.                             WHEN leg.operator_connected IS NOT NULL
  57.                                 THEN 'Звонок принят'
  58.                             ELSE 'Звонок потерян'
  59.                          END
  60.                     ELSE ''
  61.         END                                                                   AS to_oper_connected
  62.         , naucrm62.intervaltosec(NVL(leg.operator_created,leg.ivr_ended) - leg.ivr_connected)        AS queue_time
  63.         , naucrm62.intervaltosec(NVL(leg.operator_connected
  64.                                               , leg.operator_ended) - leg.operator_created)          AS ringing_time
  65.  
  66.         , naucrm62.intervaltosec(leg.operator_ended - leg.operator_connected)             AS talk_time
  67.         , naucrm62.intervaltosec(leg.operator_ended - leg.operator_connected) -
  68.               NVL(leg.operator_hold, 0)                                              AS talk_time_no_hold
  69.         , NVL(leg.operator_hold, 0)                                                  AS hold_time
  70.         , NVL(leg.operator_wrapup, 0)                                                AS acw_time
  71. --        , COALESCE(ol.oper_voip_reason,il.ivr_voip_reason,al.abonent_voip_reason,dl.dialer_voip_reason) AS voip_reason
  72. --        , COALESCE(ol.oper_internal_reason,il.ivr_internal_reason,al.abonent_internal_reason,dl.dialer_internal_reason) AS internal_reason
  73. --        , COALESCE(ol.oper_text_reason,il.ivr_text_reason,al.abonent_text_reason,dl.dialer_text_reason) AS text_reason
  74.     FROM all_leg_63 leg
  75. --        JOIN dialer_leg_63 dl
  76. --            ON leg.session_id_0 = dl.session_id
  77. --        JOIN abonent_leg_63 al
  78. --            ON leg.session_id_0 = al.session_id
  79.  
  80. --)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement