Em 06-08-2016 16:16, Tiago José Adami escreveu:
Em 6 de agosto de 2016 16:13, Tiago José Adami <adam...@gmail.com> escreveu:
Em 5 de agosto de 2016 16:51, Edson F. Lidorio <ed...@openmailbox.org> escreveu:
Opa!
Quase isso, Preciso considerar:

- todos os produtos

Não ficou claro, mas acredito que você deseje incluir todos os
produtos da tabela produto mesmo que não haja registros na tabela
historico_vendas, correto? Isto pode ser resolvido com um LEFT/RIGHT
OUTER JOIN. Veja o exemplo do SQL abaixo.

- e também fazer a média por 1 ano dos produtos que tem menos de 1 ano

Você especificou no post original que deseja uma média de 1 ano. O SQL
abaixo irá trazer *todos* os produtos, de 1 ano atrás até a data
atual. A média será pelo período inteiro (1 ano = 12 meses = 365 ou
366 dias se for ano bissexto). Com este código SQL abaixo você terá a
média do último ano de todos os produtos, independente de quando foram
cadastrados.


SELECT
    pr.id_produto,
    pr.nome_produto,
    AVG(COALESCE(hv.qtde_produto,0)) as qtde_produto_media
FROM
    produtos pr
    LEFT OUTER JOIN
    historico_vendas hv ON
        pr.id_produto = hv.id_produto
WHERE
    hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR'
GROUP BY
    pr.id_produto,
    pr.nome_produto

Depois do envio do e-mail que eu me liguei que faltou fazer uma
pergunta: Você deseja a média diária, mensal, semanal ou qual período
dentro do ano? De uma forma grosseira, se você deseja a média mensal
dentro do ano, o SQL seria mais ou menos assim:

SELECT
    pr.id_produto,
    pr.nome_produto,
    SUM(COALESCE(hv.qtde_produto,0))/12 as qtde_produto_media_mensal
FROM
    produtos pr

    LEFT OUTER JOIN
    historico_vendas hv ON
        pr.id_produto = hv.id_produto
WHERE
    hv.data_venda >= CURRENT_DATE - INTERVAL '1 YEAR'
GROUP BY
    pr.id_produto,
    pr.nome_produto

TIAGO J. ADAMI
http://www.adamiworks.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Olá Tiago,

A forma que expressei não deu para entender bem!
Desejo a média mensal dos produtos que tiveram históricos na tabela historico_vendas. Os produtos que tiveram movimentos durante um ano então faz a media mensal no período de um ano e os produtos que não tiveram movimentos na tabela historico_vendas então liste com a média zerada.

Sendo assim vai trazer todos os produtos cadastrados. Os que tiveram movimentos então faz a media mensal de um ano e os que não tiveram liste com média zero.

Acho que agora ficou mais claro.


_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a