Obrigado Osvaldo não tinha pensado nisso valeu

Em 8 de novembro de 2016 09:09, Osvaldo Kussama <[email protected]>
escreveu:

> Em 08/11/16, Alan Tavares<[email protected]> escreveu:
> > Pessoal
> >
> > Estou com uma dúvida o caso é o seguinte
> > Tenho uma tabela de vendas e tenho que fazer um relatório que o gerente
> > quer saber a quantidade vendida em 3 períodos 7, 15 e 30 dias de todos os
> > produtos na mesma tela alem de poder escolher um pediodo customizado.
> > A tabela de pedidos tem em torno de 300 mil registros e mensalmente algo
> em
> > torno de 20 mil.
> > Já consegui convencer de que não daria pra fazer em tempo real e limitar
> o
> > periodo para no maximo 90 dias.
> > A solução q fiz foi a seguinte
> > Criei uma view materializada com os dados das vendas dos ultimos 90
> dias, a
> > partir dessa view criei mais 3 views materializadas para cada um dos
> > periodos 7, 15, 30
> > onde faço o sum dos produtos e para exibição dou um join nessas 3 views
> > materializadas e em uma outra view do produto com a quantidade em
> estoque.
> > Segue abaixo.
> >
> > select a.produto,
> >   a.estoque,
> >   b.qnt_7,
> >   c.qnt_15,
> >   d.qnt_30
> > from vendas.vw_produtos a
> > inner join vendas.vm_vendas_7 b on a.id = b.id
> > inner join vendas.vm_vendas_15 c on a.id = c.id
> > inner join vendas.vm_vendas_30 d on a.id = d.id
> >
> > Existe alguma solução que de para fazer os sum de periodos diferentes na
> > mesma consulta.
> >
> > Desde já obrigado.
> >
> > Alan Costa
> >
>
> Utilize o CASE.
> Para o dado período some a quantidade, caso contrário 0.
>
> Algo do tipo:
> ... SUM( CASE WHEN (sua_data < CURRENT_DATE-INTERVAL '7 DAYS') THEN
> quantidade ELSE 0 END) ...
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a