Odchodovost zavrenych pobo
unknown
sql
2 years ago
4.8 kB
3
Indexable
--VARIANTA 3, PODLE TOHO ZDA JE I PO 12 M PRIMÁRNÍM KLIENTEM SELECT * FROM ( WITH zavrene_pobocky AS (SELECT orgh.orgh_name, orgh.orgh_code, orgh.org_key, trunc(MIN(orgh.orgh_valid_from), 'MONTH') AS datum_uzavreni, add_months(trunc(MIN(orgh.orgh_valid_from), 'MONTH'), -3) AS baze_datum, add_months(trunc(MIN(orgh.orgh_valid_from), 'MONTH'), +12) AS future_datum FROM dwh_owner.organization_history orgh WHERE 1 = 1 /*do roku 2021*/ AND orgh.orgh_level = 6 AND orgh.orgh_deleted_flag = 'Y' AND orgh.orgh_source_system_id = 'HR0' AND orgh.orgh_reporting_region_name = 'POBOČKOVÁ SÍŤ' AND orgh.orgh_category_code IN ('BP', 'BZ', 'PP', 'PR', 'SP', 'UP', 'ZP') AND orgh.orgh_valid_to <> to_date('30000101', 'yyyymmdd') AND orgh.orgh_valid_from <= (trunc(SYSDATE) - 365) GROUP BY orgh.orgh_name, orgh.orgh_code, orgh.org_key), klienti AS (SELECT zavrene_pobocky.orgh_name, zavrene_pobocky.orgh_code, zavrene_pobocky.org_key, zavrene_pobocky.datum_uzavreni, zavrene_pobocky.baze_datum, zavrene_pobocky.future_datum, phpred.pt_unified_key AS pt_unified_key_pred, phpo.pt_unified_key AS pt_unified_key_po, pcu.ptcls_key FROM zavrene_pobocky JOIN dwh_owner.party_history phpred ON zavrene_pobocky.org_key = phpred.org_key AND zavrene_pobocky.baze_datum BETWEEN phpred.pth_valid_from AND phpred.pth_valid_to AND phpred.ptori_key = 4 --zdroj CRM AND phpred.pttp_key = 1 --FO AND phpred.ptst_key = 6 --Klient AND phpred.pth_deleted_flag = 'N' JOIN ads_owner.party_properties pp ON phpred.pt_unified_key = pp.pt_key AND pp.ptori_key = 4 AND pp.pptp_key = 1 AND pp.ppr_param_flag = 'Y' AND pp.ppr_deleted_flag = 'N' AND zavrene_pobocky.baze_datum BETWEEN pp.ppr_valid_from AND pp.ppr_valid_to LEFT JOIN ads_owner.party_properties pp1 ON phpred.pt_unified_key = pp1.pt_key AND pp1.ptori_key = 4 AND pp1.pptp_key = 1 AND pp1.ppr_param_flag = 'Y' AND pp1.ppr_deleted_flag = 'N' AND zavrene_pobocky.future_datum BETWEEN pp1.ppr_valid_from AND pp1.ppr_valid_to LEFT JOIN dwh_owner.party_history phpo ON phpred.pt_unified_key = phpo.pt_unified_key AND zavrene_pobocky.future_datum BETWEEN phpo.pth_valid_from AND phpo.pth_valid_to AND phpo.ptori_key = 4 --zdroj CRM AND phpo.pttp_key = 1 --FO AND phpo.ptst_key = 6 --Klient AND phpo.pth_deleted_flag = 'N' LEFT JOIN dwh_owner.party_classf_usages pcu ON pcu.pt_key = phpred.pt_unified_key AND pcu.ptori_key = 4 AND pcu.ptclstp_key = 111 --reportingovy stav klienta --and ptcls_key in (29923,33538,33539) --umrti, zemrely s produktem, zemrely bez produktu AND zavrene_pobocky.future_datum BETWEEN pcu.ptclsus_valid_from AND pcu.ptclsus_valid_to), vysledek AS (SELECT klienti.orgh_code, klienti.orgh_name, klienti.datum_uzavreni, klienti.pt_unified_key_pred AS klienti_3m_pred, CASE WHEN klienti.pt_unified_key_po IS NOT NULL AND klienti.ptcls_key NOT IN (29923, 33538, 33539) THEN 1 ELSE 0 END AS klienti_12m_po, --pokud mrtvola nepočítám do jako klienta CASE WHEN klienti.ptcls_key IN (29923, 33538, 33539) THEN '1' ELSE '0' END AS klient_zemrel FROM klienti) SELECT 'PODLE_PRIMARNIHO_KLIENTA' AS varianta, vysledek.orgh_code, vysledek.orgh_name, vysledek.datum_uzavreni, COUNT(vysledek.klienti_3m_pred) AS klientu_3m_pred, SUM(vysledek.klienti_12m_po) AS klientu_12m_po, (COUNT(vysledek.klienti_3m_pred) - SUM(vysledek.klienti_12m_po)) - SUM(vysledek.klient_zemrel) AS klientu_odeslo, SUM(vysledek.klient_zemrel) AS pocet_zemrelych, ROUND(100*((COUNT(vysledek.klienti_3m_pred) - SUM(vysledek.klienti_12m_po) - SUM(vysledek.klient_zemrel)) / COUNT(vysledek.klienti_3m_pred)),2) AS odchodovost, ROUND(100*(SUM(vysledek.klient_zemrel) / COUNT(vysledek.klienti_3m_pred)),2) AS mortalita, ROUND(100*((COUNT(vysledek.klienti_3m_pred) - SUM(vysledek.klienti_12m_po)) / COUNT(vysledek.klienti_3m_pred)) ,2) AS odchodovost_vcetne_mortality FROM vysledek GROUP BY 'PODLE_PRIMARNIHO_KLIENTA', vysledek.orgh_code, vysledek.orgh_name, vysledek.datum_uzavreni ORDER BY vysledek.datum_uzavreni DESC)
Editor is loading...