Oracle
 sql >> Database >  >> RDS >> Oracle

Come ottenere il conteggio delle persone in base ai gruppi di età utilizzando la query SQL nel database Oracle?

Innanzitutto, il tuo calcolo dell'età non è corretto. Quasi sicuramente vuoi misurare i mesi tra le due date piuttosto che sperare che la divisione per 365,25 sia abbastanza vicina

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

In secondo luogo, se desideri raggruppare per intervalli, devi solo selezionare l'intervallo in un case dichiarazione e raggruppare per quello

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)