Resultados agrupados por mes

Firebird

09/09/2003

Tenho um query que me conta o numero de ocorrencias por dia:

Dia Ocurrencias
01-01-2003 2
02-03-2003 4
03-03-2003 3
...
02-08-2003 1
03-08-2003 3

O query é o seguinte:
SELECT PEDIDOS.PD_DATA, count(pedidos.pd_data) as cnt
FROM PEDIDOS
where pedidos.pd_data>´01-01-2003´
group by pedidos.pd_data
order by pedidos.pd_data;

Agora o que eu pretendo é agrupar tudo por mês:

Mês Ocurrencias
1 20
2 28
3 25
...

Em access isto era facil e em Firebird/Interbase alguem sabe como é?


Espiridiao

Espiridiao

Curtidas 0

Respostas

Fabricio

Fabricio

09/09/2003

Existe uma função para extrair o mês (acho que é extractmonth) é só mandar agrupar por mês.


GOSTEI 0
Espiridiao

Espiridiao

09/09/2003

Essa função não existe o que existe é a EXTRACT, mas não encontro documentação com exemplos, os docs que vêm no Firebird referenciam EXTRACT duas vezes mas não dão exemplo.
Obrigado.


GOSTEI 0
Afarias

Afarias

09/09/2003

O EXTRACT é usado da forma::

EXTRACT( _info_ FROM _campo_ ) onde _info_ pode ser ::

DAY
WEEKDAY
MONTH
YEAR

ex::

SELECT EXTRACT( MONTH FROM PD_DATA ) AS MES FROM PEDIDOS;


Agora, seu problema será :: No IB 6.0 ou FB 1.0 *não* é possível agrupar (GROUP BY) por função ... de forma q, se vc usa uma destas duas versões, não será possível agrupar pelo EXTRACT.

Entretanto, isto é de fácil solução ::

1 - crie um campo MES ::

alter table pedidos add mes smallint;

2 - preencha o campo MES ::

update pedidos set mes = extract(month from pd_data);

3 - use este campo mes na sua query...

4 - crie uma trigger before insert e outra before update na tabela pedidos com o codigo ::

new.mes = extract(month from new.pd_data);


T+


GOSTEI 0
Espiridiao

Espiridiao

09/09/2003

Em primeiro lugar obrigado pelo vosso apoio. :D
Eu resolvi o problema pegando num exemplo que afarias deu para uma situação parecida com esta:
criar um view.
executar um query tendo como fonte o view anteriormente criado.
Isto funciona ás mil maravilhas, e aprendia a utilizar os views para
substituir tabelas temporarias.

Obrigado


GOSTEI 0
Afarias

Afarias

09/09/2003

A solução da VIEW é realmente ótima e muito mais PROFISSIONAL.


T+


GOSTEI 0
POSTAR