Fórum Firebird função extract() #55122
07/02/2006
0
alguém poderia tirar uma dúvida por favor.
É o seguinte, estou fazendo uma query onde devo buscar quantos produtos foram vendidos no período de dezembro/2004 até janeiro/2005. Mais preciso que mostre separadamente em cada mês, por exemplo:
dezembro - 30
janeiro - 20
fevereiro - 50 e assim para cada mês do ano.
Bom, desta forma não traz o resultado que desejo
select
count(dataativacao),
count(datacancelamento)
from contrato
where
extract(month from dataativacao) between ´01´ and ´12´
and Extract(year from dataativacao) between ´2004´ and ´2005´
group by
extract(month from dataativacao),
extract(month from datacancelamento)
Alguém save como resolvo isso?
Obrigada!
Adriane

Adriane
Curtir tópico
+ 0Post mais votado
09/02/2006
12/2004
01/2005
02/2005
a instrução está correta.
quanto a dividir por 100 (cem), é para que mostre o mês no formato 2004.12, por exemplo. assim, se você ordenar por esse campo, a ordenação será na ordem correta.
se a sua intenção era pesquisar de 01/2004 até 12/2005, a instrução deverá mudar para (note a alteração no where):
1 2 3 4 5 6 7 8 9 10 | select (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) mes, count(dataativacao) quantidade, from contrato where (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) between 2004.01 and 2005.12 group by 1 |
Emerson Nascimento

Gostei + 1
Mais Posts
07/02/2006
Emerson Nascimento
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | select (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) mes, count(dataativacao) quantidade, from contrato where (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) between 2004.12 and 2005.02 group by (extract(year from dataativacao) + (extract(month from dataativacao) / 100)) poderia ser também group by 1 (visto que o agrupamento é feito pelo 1o. campo da instrução) |
Gostei + 0
08/02/2006
Adriane
desta forma não deu certo, me trouxe apenas três linhas e já verifiquei em todos os meses houve venda.
Só me tire uma dúvida pq precisamos de dividir por 100?
select
[b:5c01483317](extract(year from dataativacao) + (extract(month from dataativacao) / 100))[/b:5c01483317] mes,
count(dataativacao) quantidade
from
contrato
where
(extract(year from dataativacao) + (extract(month from dataativacao) / 100))
between 2004.12 and 2005.02
group by
1
Obrigada!
Gostei + 0
09/02/2006
Adriane
muito obrigada pela ajuda. Desculpe, pela dúvida meio ´burra´ é que estou iniciando e ainda tenho muito o que aprender.
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)