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