Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zliczyć osoby na podstawie grup wiekowych za pomocą zapytania SQL w bazie danych Oracle?

Po pierwsze, Twoje obliczenie wieku jest nieprawidłowe. Prawie na pewno chcesz zmierzyć miesiące między dwiema datami, zamiast mieć nadzieję, że podzielenie przez 365,25 jest wystarczająco bliskie

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

Po drugie, jeśli chcesz pogrupować według zakresów, wystarczy wybrać zakres w case oświadczenie i pogrupuj według tego

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy w Rubim jest funkcja nvl(), czy muszę ją napisać sam?

  2. Optymalizacja kodu w PL/SQL. Dokonywanie tego do właściwego. Kod działa, ale nie jest prawidłowy

  3. Zapytanie Oracle Insert w procedurze składowanej nie działa po wywołaniu z kodu znajdującego się za nim

  4. Dynamiczne obracanie tabeli Oracle

  5. CURRENT_TIMESTAMP() Funkcja w Oracle