Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como obter a contagem de pessoas com base em faixas etárias usando a consulta SQL no banco de dados Oracle?


Primeiro, seu cálculo de idade está incorreto. Você quase certamente quer medir os meses entre as duas datas, em vez de esperar que a divisão por 365,25 seja próxima o suficiente
trunc( months_between( sysdate, p.birth_date )/ 12 )

Segundo, se você deseja agrupar por intervalos, basta selecionar o intervalo em um case declaração e grupo por isso
SELECT (case when age <= 5
             then 'age <= 5'
             when age > 5 and age <= 10
             then 'age > 5 and age <= 10'
             else 'age > 10'
         end) bucket,
       count(*)
  FROM( SELECT trunc( months_between( sysdate, p.birth_date )/ 12 ) age
          FROM person p )
 GROUP BY (case when age <= 5
                then 'age <= 5'
                when age > 5 and age <= 10
                then 'age > 5 and age <= 10'
                else 'age > 10'
            end)