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

Mệnh đề OVER trong Oracle

OVER mệnh đề chỉ định phân vùng, thứ tự và cửa sổ "mà qua đó" chức năng phân tích hoạt động.

Ví dụ số 1:tính toán đường trung bình động

AVG(amt) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)

date   amt   avg_amt
=====  ====  =======
1-Jan  10.0  10.5
2-Jan  11.0  17.0
3-Jan  30.0  17.0
4-Jan  10.0  18.0
5-Jan  14.0  12.0

Nó hoạt động trên một cửa sổ di chuyển (rộng 3 hàng) trên các hàng, được sắp xếp theo ngày.

Ví dụ số 2:tính toán số dư đang hoạt động

SUM(amt) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)

date   amt   sum_amt
=====  ====  =======
1-Jan  10.0  10.0
2-Jan  11.0  21.0
3-Jan  30.0  51.0
4-Jan  10.0  61.0
5-Jan  14.0  75.0

Nó hoạt động trên một cửa sổ bao gồm hàng hiện tại và tất cả các hàng trước đó.

Lưu ý:đối với tổng hợp có OVER mệnh đề chỉ định một loại ORDER , cửa sổ mặc định là UNBOUNDED PRECEDING thành CURRENT ROW , do đó, biểu thức trên có thể được đơn giản hóa thành, với cùng một kết quả:

SUM(amt) OVER (ORDER BY date)

Ví dụ số 3:tính toán số tiền tối đa trong mỗi nhóm

MAX(amt) OVER (PARTITION BY dept)

dept  amt   max_amt
====  ====  =======
ACCT   5.0   7.0
ACCT   7.0   7.0
ACCT   6.0   7.0
MRKT  10.0  11.0
MRKT  11.0  11.0
SLES   2.0   2.0

Nó hoạt động trên một cửa sổ bao gồm tất cả các hàng cho một ghi nợ cụ thể.

SQL Fiddle:http://sqlfiddle.com/#!4/9eecb7d/122



  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 CHÈN nếu một hàng không tồn tại

  2. Khi nào tôi cần sử dụng dấu chấm phẩy và dấu gạch chéo trong Oracle SQL?

  3. Có cách nào để đưa ra thông báo lỗi thân thiện với người dùng về vi phạm ràng buộc không

  4. Biểu diễn địa chỉ IPv4 / IPv6 trong Oracle

  5. Người dùng lược đồ Oracle không thể tạo bảng trong thủ tục