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

Áp dụng hàm COUNT trên một nhóm con của các nhóm

Không, không cần hàm phân tích; Dù sao thì chúng cũng khó có cùng một truy vấn như một hàm tổng hợp.

Bạn đang tìm case một lần nữa, bạn chỉ cần đặt nó vào GROUP BY.

select hire_year
     , sum(married) as married
     , sum(certified) as certified
     , sum(religious) as religious
     , case when salary > 2000 then 'A'
            when salary >= 1000 then 'B'
            else 'C' end as salary_class
  from employees
 group by hire_year
     , case when salary > 2000 then 'A'
            when salary >= 1000 then 'B'
            else 'C' end

Lưu ý rằng tôi đã thay đổi số lượng count(case when...) thành sum() . Điều này là do bạn đang sử dụng boolean 1/0 nên điều này sẽ hoạt động theo cách tương tự nhưng nó gọn gàng hơn rất nhiều.

Vì lý do tương tự, tôi đã bỏ qua between trong cách tính lương của bạn; không có nhu cầu cụ thể cho nó vì nếu mức lương lớn hơn 2000 thì CASE đầu tiên đã được hoàn thành.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thiết lập môi trường phát triển để học PL / SQL

  2. Chuyển đổi tham gia Oracle thành tham gia Ansi

  3. Làm cách nào để xử lý null trong câu lệnh NOT IN và NOT LIKE trong Oracle?

  4. Làm cách nào để lấy kiểu dữ liệu cột trong Oracle với PL-SQL với đặc quyền thấp?

  5. Định dạng chuỗi URL để kết nối với cơ sở dữ liệu Oracle với JDBC