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

Responder a