Pessoal,

Tenho uma tabela com umas 40 colunas de indicadores, onde a maioria das
colunas permite valores nulos.
Preciso de uma view que classifique cada indicador em 3 quartis,
desconsiderando os valores nulos.
Atualmente estou usando o sql abaixo para montar a view. Está funcionando
corretamente. Minha dúvida é:

Existe alguma forma melhor ou mais otimizada de fazer essa classificação de
cada coluna da tabela?

Desde já agradeço.

Att,
Luciano


CREATE OR REPLACE VIEW v_indicadores_rank AS
 SELECT a.campo,
    a.quartil,
    max(a.valor) AS valor
   FROM ( SELECT 'indicador1'::text AS campo,
            indicador1 AS valor,
            ntile(3) OVER (ORDER BY indicador1) AS quartil
           FROM eindcoleta
           where indicador1 is not null

        UNION ALL

         SELECT 'indicador2'::text AS text,
            indicador2  AS valor,
            ntile(3) OVER (ORDER BY indicador2) AS ntile
           FROM eindcoleta
           where indicador2 is not null

        UNION ALL

         SELECT 'indicador3'::text AS text,
            indicador3 AS valor,
            ntile(3) OVER (ORDER BY indicador3) AS ntile
           FROM eindcoleta
           where indicador3 is not null


        < N UNION ALL com as outras N colunas da tabela >

) a
  WHERE a.quartil < 3
  GROUP BY a.campo, a.quartil;
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a