Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để có được số người dựa trên các nhóm tuổi bằng cách sử dụng truy vấn SQL trong cơ sở dữ liệu Oracle?

Đầu tiên, cách tính tuổi của bạn không chính xác. Bạn gần như chắc chắn muốn đo các tháng giữa hai ngày hơn là hy vọng rằng chia cho 365,25 là đủ gần

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

Thứ hai, nếu bạn muốn nhóm theo phạm vi, bạn chỉ cần chọn phạm vi trong một case tuyên bố và nhóm theo đó

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. oracle cách chuyển các cột thành hàng mà không có UNION

  2. Oracle tương đương với SQL Server bao gồm các cột để lập chỉ mục

  3. Ví dụ về công việc DBMS_SCHEDULER Chạy mỗi giờ

  4. truy vấn phụ - đạt điểm cao nhất

  5. Cơ sở dữ liệu Oracle được xây dựng sẵn để học và thử nghiệm bằng Oracle Developer VM