OVER
खंड विभाजन, क्रम और विंडो को निर्दिष्ट करता है "जिस पर" विश्लेषणात्मक कार्य संचालित होता है।
उदाहरण #1:चलती औसत की गणना करें
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
यह दिनांक के अनुसार क्रमित पंक्तियों के ऊपर एक चलती हुई विंडो (3 पंक्तियाँ चौड़ी) पर कार्य करता है।
उदाहरण #2:चालू शेष राशि की गणना करें
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
यह एक विंडो पर काम करता है जिसमें वर्तमान पंक्ति और सभी पूर्व पंक्तियाँ शामिल हैं।
नोट:OVER
. के साथ समग्रता के लिए एक प्रकार निर्दिष्ट करने वाला खंड ORDER
, डिफ़ॉल्ट विंडो UNBOUNDED PRECEDING
. है CURRENT ROW
. के लिए , इसलिए उपरोक्त अभिव्यक्ति को उसी परिणाम के साथ सरल बनाया जा सकता है:
SUM(amt) OVER (ORDER BY date)
उदाहरण #3:प्रत्येक समूह में अधिकतम की गणना करें
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
यह एक विंडो पर संचालित होता है जिसमें किसी विशेष विभाग के लिए सभी पंक्तियां शामिल होती हैं।
एसक्यूएल फिडल:http://sqlfiddle.com/#!4/9eecb7d/122