Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann man die Anzahl der Personen basierend auf Altersgruppen mithilfe einer SQL-Abfrage in der Oracle-Datenbank abrufen?

Erstens ist Ihre Altersberechnung falsch. Sie möchten mit ziemlicher Sicherheit die Monate zwischen den beiden Daten messen, anstatt zu hoffen, dass die Division durch 365,25 nahe genug ist

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

Zweitens, wenn Sie nach Bereichen gruppieren möchten, müssen Sie nur den Bereich in einem case auswählen -Anweisung und gruppiere danach

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)