Em 21 de maio de 2014 16:23, Pedro B. Alves <[email protected]>escreveu:

>
>
>
> Em 21 de maio de 2014 11:11, veronica almeida <
> [email protected]> escreveu:
>
> Oi, Pedro!
>>
>> Se tiver uma tabela com datas, uma dimensão de tempo (com data, ano,
>> mes), por exemplo, pode fazer algo assim:
>>
>> SELECT dim_tempo.mes, dim_tempo.ano, COUNT(pedidos.id)
>>   FROM dim_tempo
>>   LEFT JOIN pedidos ON dim_tempo.data = pedidos.datapedido
>> GROUP BY dim_tempo.mes, dim_tempo.ano
>>
>>
>>
> O problema não é a relação e sim os meses que não tem pedido.
>
> Por exemplo:
>
> quero os pedidos de Janeiro a Maio.
>
> Os meses que não tiverem pedidos, não vai trazer na relação, por isso
> preciso algo que cria esses meses.
>

A tabela dim_tempo irá conter esses meses, seria uma tabela completa (de
tal ano até tal ano dependendo da necessidade), sem "buracos" nas datas.
Geralmente é utilizada em DW como a dimensão de tempo.

O que o Matheus mandou irá retornar linhas "duplicadas" e não entendi de
onde vem o "dt"

Mais ou menos isso, quando digo linhas "duplicadas":

SELECT 05 as mes, 2014 as ano, 10 as qtd
UNION ALL
SELECT 05, 2014, 0

5;2014;10
5;2014;0

Como o Renato mandou elimina a "duplicidade":

SELECT mes, ano, SUM (qtd) as qtd FROM (
SELECT 05 as mes, 2014 as ano, 10 as qtd
UNION ALL
SELECT 05, 2014, 0) as pedidos
GROUP BY mes, ano

5;2014;10

Não conhecia o generate_series... Valeu Matheus pela dica!! (-:
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a