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

Tôi có thể nhóm theo truy vấn SQL với hàm cửa sổ không?

Điều đầu tiên cần nhớ là các hàm cửa sổ (như OVER() mệnh đề) làm việc trên kết quả của truy vấn. Đó là:Đầu tiên máy chủ thực thi truy vấn và chỉ sau đó áp dụng chức năng cửa sổ do bạn xác định.

Điều này có nghĩa là bạn thực sự có thể sử dụng hàm cửa sổ và nhóm theo mệnh đề trong cùng một truy vấn, nhưng bạn cần phải đóng gói nó, như sau:

SELECT department_id,
       min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;

Tuy nhiên, tôi đồng ý rằng đây không phải là một nơi tốt để sử dụng chức năng cửa sổ. Đề xuất của Matt là tốt nhất ở đây (ROW_NUMBER() trong CTE hoặc subquery , sau đó chỉ chọn các hàng mong muốn trong SELECT chí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. Làm thế nào để tạo một chuỗi Oracle bắt đầu với giá trị tối đa từ một bảng?

  2. Tìm nạp dữ liệu dựa trên tháng của một quý tính bằng sql

  3. Làm cách nào để chuyển tệp kết xuất Oracle sang phiên bản AWS RDS?

  4. Nhận XEM ddl bằng cách sử dụng truy vấn

  5. Truy vấn SQL để Đếm () nhiều bảng