Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir le nombre de personnes en fonction des groupes d'âge à l'aide d'une requête SQL dans la base de données Oracle ?

Tout d'abord, votre calcul d'âge est incorrect. Vous voulez presque certainement mesurer les mois entre les deux dates plutôt que d'espérer que la division par 365,25 est assez proche

trunc( months_between( sysdate, p.birth_date )/ 12 )

Deuxièmement, si vous souhaitez regrouper par plages, il vous suffit de sélectionner la plage dans un case déclaration et groupe par cela

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)