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

Phân vùng Oracle theo Từ khóa

PARTITION BY mệnh đề đặt phạm vi bản ghi sẽ được sử dụng cho mỗi "GROUP" trong OVER mệnh đề.

Trong SQL mẫu của bạn, DEPT_COUNT sẽ trả về số lượng nhân viên trong bộ phận đó cho mọi hồ sơ nhân viên. (Nó giống như thể bạn đang hủy bỏ danh sách emp bàn; bạn vẫn trả lại mọi bản ghi trong emp bảng.)

emp_no  dept_no  DEPT_COUNT
1       10       3
2       10       3
3       10       3 <- three because there are three "dept_no = 10" records
4       20       2
5       20       2 <- two because there are two "dept_no = 20" records

Nếu có một cột khác (ví dụ:state ) thì bạn có thể đếm có bao nhiêu phòng ban trong Tiểu bang đó.

Nó giống như nhận kết quả của GROUP BY (SUM , AVG , v.v.) mà không có tập hợp kết quả tổng hợp (tức là xóa các bản ghi phù hợp).

Nó hữu ích khi bạn sử dụng LAST OVER hoặc MIN OVER các chức năng để lấy, ví dụ, mức lương thấp nhất và cao nhất trong bộ phận và sau đó sử dụng mức lương đó trong một phép tính dựa trên mức lương hồ sơ này không có một lựa chọn phụ, nhanh hơn nhiều.

Đọc bài viết AskTom được liên kết để biết thêm chi tiết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các kiểu dữ liệu Oracle

  2. SQLT và phân vùng

  3. Ký tự thoát SQL trong Oracle (cho một '&')

  4. Oracle 12.2 Sharding

  5. SQL Server:làm thế nào để bắt chước truy vấn oracle keep secure_rank?