Difícil - Group By

Firebird

17/10/2003

Como faço para contar o número de pessoas que fazer aniversário em um determinado mês? O resultaro seria assim:

mes qtd
1   51
2   32
3   61
.   .
.   .
.   .
12  65


Tentei assim e não funcionou:
SELECT EXTRACT(MONTH FROM P.DT_NASCIMENTO), COUNT(EXTRACT(DAY FROM P.DT_NASCIMENTO))
FROM PESSOA P
GROUP BY EXTRACT(MONTH FROM P.DT_NASCIMENTO)


Assim também não funciona:
SELECT EXTRACT(MONTH FROM P.DT_NASCIMENTO), COUNT(EXTRACT(DAY FROM P.DT_NASCIMENTO))
FROM PESSOA P
GROUP BY 1


[b:d81c6d563d]AFARIAS[/b:d81c6d563d], ME AJUDA BROTHER!!!


Tenil

Tenil

Curtidas 0

Respostas

Afarias

Afarias

17/10/2003

no Interbase e no FB 1.0 não é possível agrupar por função (no FB 1.5 pode) -- e, o GROUP BY não pode ser pelo índice do campo (como o ORDER BY) ... sendo assim...

vc pode criar uma view como::

create view aniversarios (nome varchar(30), dia smallint, mes smallint, ano smallint) as
select nome, extract(day from data_nasc), extract(month from data_nasc), extract(year from data_nasc)) from pessoa;


e, faça sua query em cima desta view::

select mes, count(*) from aniversarios
group by mes;



T+

PS: a view só precisa do campo MES claro... o resto só botei como exemplo.


GOSTEI 0
Tenil

Tenil

17/10/2003

Valeu mano,

fiz como vc falou, deu certo.

Mais uma vez, obrigado.


GOSTEI 0
POSTAR