Em 28/09/2014 16:58, [email protected] escreveu:
>
>
> Em 26/09/2014 16:11, "Paulo Vitor Bettini de Albuqerque Lima" <
[email protected]> escreveu:
> > Gostaria de criar uma view para sumarizar por estado, a quantidade de
unidades que estão em cada um dos status.
> >
> > Vamos as tabelas:
> >
> > unidade:
> > nome text,
> > cod_ibge text,
> > id serial NOT NULL
> >
> > parecer_unidade
> > id bigserial NOT NULL,
> > idunidade text,
> > status text,
> > obs text,
> > gestor_estado text NOT NULL,
> > hora_data timestamp with time zone DEFAULT now(),
> >
> > municipio
> > codigo text NOT NULL,
> > nome text,
> > sigla_estado text,
> >
> > Senhores, dado o ambiente catastrófico, falta de indices,
relacionamentos (fk), chave das tabelas que não batem o tipo, etc...
> >
> > Detalhe, a tabela parecer_unidade, é uma tabela de histórico, toda
movimentação do status da unidade, fica registrado lá, por exemplo:
> >
> > unidade:
> > nome=brasilia1,cod_ibge=1234,id=1
> > nome=saopaulo2,cod_ibge=1235,id=2
> > nome=brasilia2,cod_ibge=1234,id=3
> >
> > parecer_unidade:
> > id=1,idunidade=1,status="nao atende as regras", data=25/09/2014 13:00:00
> > id=2,idunidade=1,status="atende as regras",data=26/09/2014 15:00:00
> > id=3,idunidade=2,status="nao atende as regras", data=25/09/2014 13:00:00
> > id=4,idunidade=3,status="atende as regras",data=26/09/2014 15:00:00
> >
> > O que deveria vir na view:
> >
> > uf=DF,status="nao atende as regras", qtde=1
> > uf=DF,status="atende as regras", qtde=2
> > uf=SP,status="nao atende as regras",qtde=1
> >
>
> Uma forma seria algo parecido com:
>
> SELECT m.sigla_estado, count (*) FROM (
> SELECT DISTINCT ON (idunidade) idunidade, status
> FROM parecer_unidade
> ORDER BY data DESC
> ) t JOIN unidade u ON u.
Ops. Enviei antes. Foi mal. Continuando:
SELECT m.sigla_estado, t.status, count (*) FROM (
SELECT DISTINCT ON (idunidade) idunidade, status
FROM parecer_unidade
ORDER BY idunidade, data DESC
) t JOIN unidade u ON u.id=t.idunidade
JOIN municipio m ON m.codigo=u.cod_ibge
GROUP BY sigla_estado, status;
Dependendo da versão do PostgreSQL há outras opções. Veja se essa atende.
At.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral