Advertisement
RogerioEustaquio

Untitled

May 16th, 2022
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 4.85 KB | None | 0 0
  1. SELECT emp AS x
  2.         ,curva_rol AS y
  3.         ,ROUND(SUM(a.rol),0) AS z
  4.         ,curva_rol
  5.         ,emp
  6. FROM (SELECT a.cc
  7.             ,'TOTAL' AS rede
  8.                 ,a.emp
  9.                 ,ptm.curva_rol
  10.                 ,SUM(a.qtd) AS qtd
  11.                 ,SUM(a.rol) AS rol
  12.                 ,SUM(a.lb) AS lb
  13.                 ,SUM(a.cmv) AS cmv
  14.                 ,CASE WHEN SUM(rol) >0 THEN ROUND(SUM(a.lb)/SUM(rol)*100) ELSE 0 END AS mb
  15.                 ,a.cnpj_parceiro cc
  16.                 ,a.nota nf
  17.                 ,CASE WHEN SUM(rol) >0 THEN
  18.                         (CASE WHEN NVL(ROUND(SUM(a.lb)/SUM(rol)*100) ,0) <= 5 THEN 1
  19.                             WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 5 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 10 THEN 2
  20.                             WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 10 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 15 THEN 3
  21.                             WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 15 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 20 THEN 4
  22.                             WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 20 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 25 THEN 5
  23.                             WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 25 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 30 THEN 6
  24.                             WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 30 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 35 THEN 7
  25.                             WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 35 THEN 8 END)
  26.                     ELSE 1 END AS fx_mb_o1
  27.                     , CASE WHEN SUM(rol) >0 THEN
  28.                         (CASE WHEN NVL(ROUND(SUM(a.lb)/SUM(rol)*100) ,0) <= 5 THEN '0-5'
  29.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 5 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 10 THEN '6-10'
  30.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 10 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 15 THEN '11-15'
  31.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 15 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 20 THEN '16-20'
  32.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 20 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 25 THEN '21-25'
  33.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 25 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 30 THEN '26-30'
  34.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 30 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 35 THEN '31-35'
  35.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 35 THEN '36-x' END)
  36.                     ELSE '0-5' END AS fx_mb_v1
  37.                     ,CASE WHEN SUM(rol) >0 THEN
  38.                         (CASE WHEN NVL(ROUND(SUM(a.lb)/SUM(rol)*100) ,0) <= 15 THEN 1
  39.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 15 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 20 THEN 2
  40.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 20 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 29 THEN 3
  41.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) >= 30 THEN 4 END)
  42.                     ELSE 1 END AS fx_mb_o2
  43.                     ,CASE WHEN SUM(rol) >0 THEN
  44.                         (CASE WHEN NVL(ROUND(SUM(a.lb)/SUM(rol)*100) ,0) <= 15 THEN '0-15'
  45.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 15 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 20 THEN '16-20'
  46.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) > 20 AND ROUND(SUM(a.lb)/SUM(rol)*100) <= 29 THEN '21-29'
  47.                         WHEN ROUND(SUM(a.lb)/SUM(rol)*100) >= 30 THEN '30-x' END)
  48.                     ELSE '0-15' END AS fx_mb_v2
  49.         FROM vm_skvendanota a,
  50.             -- Pareto ROL Marca
  51.             (SELECT rede, cc, emp,
  52.                     (CASE WHEN ac <= 50 THEN 'A' WHEN ac <= 80 THEN 'B' ELSE 'C' END) AS curva_rol
  53.                 FROM (SELECT rede, emp, cc,
  54.                             SUM(SUM(fr)) over (PARTITION BY rede ORDER BY rol DESC rows unbounded preceding) AS ac
  55.                         FROM (
  56.                             SELECT rede, emp, cc, rol,
  57.                                 100*RATIO_TO_REPORT((CASE WHEN rol > 0 THEN rol END)) over (PARTITION BY rede) fr
  58.                             FROM (SELECT 'TOTAL' AS rede, a.emp, a.cnpj_parceiro AS cc,
  59.                                             ROUND(SUM(rol),2) AS rol
  60.                                     FROM vm_skvendanota a
  61.                                     WHERE 1 =1
  62.                                     AND TRUNC(a.data) >= TO_DATE('01/01/2022') AND TRUNC(a.data) <= SYSDATE
  63.                                     GROUP BY a.emp, a.cnpj_parceiro)
  64.                         )                                        
  65.             GROUP BY rede, emp, cc, rol)
  66.             ORDER BY cc, emp, ac ASC) ptm
  67.         WHERE a.cnpj_parceiro = ptm.cc(+)
  68.         AND a.emp = ptm.emp(+)
  69.        
  70.         AND TRUNC(a.data) >= TO_DATE('01/01/2022') AND TRUNC(a.data) <= SYSDATE
  71.        
  72.        
  73.         GROUP BY a.cc, a.emp, a.cnpj_parceiro, a.nota, ptm.curva_rol) a
  74. WHERE 1 = 1
  75. GROUP BY emp
  76.         ,curva_rol
  77.         ,emp
  78.         ,curva_rol
  79. ORDER BY emp , curva_rol ASC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement