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