Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите брой хора въз основа на възрастови групи с помощта на SQL заявка в база данни на Oracle?

Първо, изчисляването на възрастта ви е неправилно. Почти със сигурност искате да измерите месеците между двете дати, вместо да се надявате, че разделянето на 365,25 е достатъчно близо

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

Второ, ако искате да групирате по диапазони, просто трябва да изберете диапазона в case изявление и група по него

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. Какво означава символът SQL Select || означава?

  2. SQL Server променя стойността на колоната при въвеждане на тригер

  3. row num не показва никакви редове при използване на ключова дума между

  4. Каква е алтернативата на MySQL на функцията NEXT_DAY на Oracle?

  5. Свързване на Oracle 21c към SQL Server