Advertisement
Guest User

Untitled

a guest
Jul 24th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. WITH
  2. incidents AS (
  3.     SELECT
  4.       *
  5.     FROM regsysref.sd_incident si
  6.     WHERE si.reg_date >= TO_DATE('2018-07-20', 'yyyy-mm-dd')
  7.     AND si.reg_date < TO_DATE('2018-07-20', 'yyyy-mm-dd') + INTERVAL '1' DAY
  8.     AND si.direction = 'i'
  9.     AND si.reg_department_id = 105
  10. ),
  11. all_i AS (
  12.   SELECT
  13.     COUNT(*) AS cnt
  14.   FROM incidents
  15. ),
  16. by_service AS (
  17.   SELECT
  18.     COUNT(*) AS cnt
  19.   FROM incidents
  20.   WHERE SERVICE_INT_ID IN (334, 5283, 5200, 5226, 5292, 5392)
  21. ),
  22. by_result AS (
  23.   SELECT
  24.     COUNT(*) AS cnt
  25.   FROM incidents
  26.   WHERE FEATURE_INT_ID IN (154, 2763, 337)
  27. ),
  28. need_fixorder AS (
  29.   SELECT
  30.     COUNT(*) AS cnt
  31.   FROM incidents
  32.   WHERE RESOLVED_INT_ID IN (346, 347, 348)
  33. ),
  34. need_ss AS (
  35.   SELECT
  36.     COUNT(*) AS cnt
  37.   FROM incidents
  38.   WHERE RESOLVED_INT_ID IN (338, 339)
  39. ),
  40. for_2lvl AS (
  41.   SELECT
  42.     COUNT(*) AS cnt
  43.   FROM incidents
  44.   WHERE RESOLVED_INT_ID = 352
  45. ),
  46. question_not_first AS (
  47.   SELECT
  48.     COUNT(*) AS cnt
  49.   FROM incidents
  50.   WHERE RESOLVED_INT_ID IN (2235, 5253, 2385, 5387, 5388, 2168, 5104)
  51. ),
  52. consultation_given AS (
  53.   SELECT
  54.     COUNT(*) AS cnt
  55.   FROM incidents
  56.   WHERE RESOLVED_INT_ID = 5233
  57. ),
  58. decided_1lvl AS (
  59.   SELECT
  60.     COUNT(*) AS cnt
  61.   FROM incidents
  62.   WHERE RESOLVED_INT_ID IN (5365, 5358, 5229)
  63. ),
  64. all_stat AS (
  65.   SELECT
  66.     'По сервисам' AS text,
  67.     by_service.cnt AS cnt,
  68.     CASE WHEN by_service.cnt > 0 AND all_i.cnt > 0
  69.       THEN ROUND(by_service.cnt / all_i.cnt * 100, 2)
  70.       ELSE 0
  71.     END AS pct,
  72.     1 AS position
  73.   FROM all_i, by_service
  74.  
  75.   UNION
  76.  
  77.   SELECT
  78.     'Всего  аварии/плановые' AS text,
  79.     by_result.cnt AS cnt,
  80.     CASE WHEN by_result.cnt > 0 AND all_i.cnt > 0
  81.       THEN ROUND(by_result.cnt / all_i.cnt * 100, 2)
  82.       ELSE 0
  83.     END AS pct,
  84.     2 AS position
  85.   FROM all_i, by_result
  86.  
  87.   UNION
  88.  
  89.   SELECT
  90.     'Требуется ремонт' AS text,
  91.     need_fixorder.cnt AS cnt,
  92.     CASE WHEN need_fixorder.cnt > 0 AND all_i.cnt > 0
  93.       THEN ROUND(need_fixorder.cnt / all_i.cnt * 100, 2)
  94.       ELSE 0
  95.     END AS pct,
  96.     3 AS position
  97.   FROM all_i, need_fixorder
  98.  
  99.   UNION
  100.  
  101.   SELECT
  102.     'Требуется cc' AS text,
  103.     need_ss.cnt AS cnt,
  104.     CASE WHEN need_ss.cnt > 0 AND all_i.cnt > 0
  105.       THEN ROUND(need_ss.cnt / all_i.cnt * 100, 2)
  106.       ELSE 0
  107.     END AS pct,
  108.     4 AS position
  109.   FROM all_i, need_ss
  110.  
  111.   UNION
  112.  
  113.   SELECT
  114.     'На второй' AS text,
  115.     for_2lvl.cnt AS cnt,
  116.     CASE WHEN for_2lvl.cnt > 0 AND all_i.cnt > 0
  117.       THEN ROUND(for_2lvl.cnt / all_i.cnt * 100, 2)
  118.       ELSE 0
  119.     END AS pct,
  120.     5 AS position
  121.   FROM all_i, for_2lvl
  122.  
  123.   UNION
  124.  
  125.   SELECT
  126.     'Вопрос не с первого раза' AS text,
  127.     question_not_first.cnt AS cnt,
  128.     CASE WHEN question_not_first.cnt > 0 AND all_i.cnt > 0
  129.       THEN ROUND(question_not_first.cnt / all_i.cnt * 100, 2)
  130.       ELSE 0
  131.     END AS pct,
  132.     6 AS position
  133.   FROM all_i, question_not_first
  134.  
  135.   UNION
  136.  
  137.   SELECT
  138.     'Дана консультация' AS text,
  139.     consultation_given.cnt AS cnt,
  140.     CASE WHEN consultation_given.cnt > 0 AND all_i.cnt > 0
  141.       THEN ROUND(consultation_given.cnt / all_i.cnt * 100, 2)
  142.       ELSE 0
  143.     END AS pct,
  144.     7 AS position
  145.   FROM all_i, consultation_given
  146.  
  147.   UNION
  148.  
  149.   SELECT
  150.     'Решили на первом уровне' AS text,
  151.     decided_1lvl.cnt AS cnt,
  152.     CASE WHEN decided_1lvl.cnt > 0 AND all_i.cnt > 0
  153.       THEN ROUND(decided_1lvl.cnt / all_i.cnt * 100, 2)
  154.       ELSE 0
  155.     END AS pct,
  156.     7 AS position
  157.   FROM all_i, decided_1lvl
  158. )
  159.  
  160. SELECT text AS TEXT, cnt AS CNT, pct AS PCT FROM all_stat ORDER BY position
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement