Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diogo Freitas

[Resolvido] Agrupando por Faixa Etaria

Recommended Posts

Pessoal criei um script que calcula a idade utilizando a data de nascimento! preciso que ele agrupe por faixa etaria, por exemplo; de 0 a 18 anos, 19 a 23...,

conseguir chegar no calculo da idade mais so consigo agrupar por idade especifica como por exemplo quantos tem 18 anos,

se puderem me ajudar, não é nescessario utilizar o que iniciei se tiver outro modo pode ser!

 

SELECT Floor(Months_Between(sysdate, DTNASCIMENTO)/12) Q$

FROM PFDEPEND

WHERE DTNASCIMENTO IS NOT NULL

GROUP BY DTNASCIMENTO

ORDER BY DTNASCIMENTO DESC

 

Desde ja agradeço!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diogo, faz uma condicional para obter as faixas etarias, por exemplo:

 

select case

when Floor(Months_Between(sysdate, DTNASCIMENTO)/12) <=18

then '0 a 18 Anos'

wheb (Floor(Months_Between(sysdate, DTNASCIMENTO)/12) >18 and <= 23)

then '19 a 23'

end ds_faixa,

count(*)

from pessoa

group by case

when Floor(Months_Between(sysdate, DTNASCIMENTO)/12) <=18

then '0 a 18 Anos'

wheb (Floor(Months_Between(sysdate, DTNASCIMENTO)/12) >18 and <= 23)

then '19 a 23'

end

 

 

tenta isso aí...abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Guilherme deu certinho, muito obrigado mesmo http://forum.imasters.com.br/public/style_emoticons/default/clap.gif !

alterei um pequeno detalhe!

select case

when Floor(Months_Between(sysdate, DTNASCIMENTO)/12) <=18

then '0 a 18 Anos'

wheb Floor(Months_Between(sysdate, DTNASCIMENTO)/12) >18 and Floor(Months_Between(sysdate, NASCIMENTO)/12)<= 23)

then '19 a 23'

end ds_faixa,

count(*)

from pessoa

group by case

when Floor(Months_Between(sysdate, DTNASCIMENTO)/12) <=18

then '0 a 18 Anos'

wheb Floor(Months_Between(sysdate, DTNASCIMENTO)/12) >18 and Floor(Months_Between(sysdate, NASCIMENTO)/12)<= 23)

then '19 a 23'

end

 

Mais uma vez obrigado http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diogo,

a rotina abaixo traz os registros agrupados por um determinado campo agrupador (Qquer), e a faixa etária fica em colunas. Espero q ajude

 

SELECT DECODE( GROUPING( AGRUPADOR ),1, 'TOTAL', AGRUPADOR ) AS AGRUPADOR,

SUM( DECODE( IDADE, 'ATE 17', 1, 0 ) ) ATE_17,

SUM( DECODE( IDADE, '18 A 29', 1, 0 ) ) DE_18_29,

SUM( DECODE( IDADE, '30 A 49', 1, 0 ) ) DE_30_49,

SUM( DECODE( IDADE, 'ACIMA_50', 1, 0 ) ) ACIMA_50

 

FROM (

SELECT AGRUPADOR,

CASE

WHEN IDADE < 18 THEN 'ATE 17'

WHEN IDADE >= 18 AND IDADE < 30 THEN '18 A 29'

WHEN IDADE >= 31 AND IDADE < 50 THEN '30 A 49'

WHEN IDADE >= 50 THEN 'ACIMA_50'

END IDADE

FROM TABELA

)

 

GROUP BY ROLLUP( AGRUPADOR )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Joao G. Gutheil

 

Sei que a intenção foi boa mas este topico é de 09/2008

 

Se deseja realmente ajudar o forúm responda em topicos recentes onde os usuarios ainda precisam da resposta

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.