sql - ओरेकल में खंड पर



oracle window-functions (2)

ओरेकल में ओवर क्लॉज का अर्थ क्या है?


आप कुछ समग्र कार्यों को विश्लेषणात्मक में बदलने के लिए इसका उपयोग कर सकते हैं:

SELECT  MAX(date)
FROM    mytable

एक पंक्ति के साथ 1 पंक्ति वापस कर देगा,

SELECT  MAX(date) OVER (ORDER BY id)
FROM    mytable

एक अधिकतम अधिकतम के साथ सभी पंक्तियों को वापस कर देगा।


ओवर क्लॉज विभाजन, ऑर्डरिंग और विंडो को "जिस पर" विश्लेषणात्मक फ़ंक्शन संचालित करता है निर्दिष्ट करता है।

उदाहरण के लिए, यह एक चलती औसत की गणना करता है:

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 पंक्तियों चौड़ी) पर संचालित होता है, जो तिथि के अनुसार आदेश दिया जाता है।

यह एक चलती शेष राशि की गणना करता है:

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

यह एक खिड़की पर चल रहा है जिसमें वर्तमान पंक्ति और सभी पूर्व पंक्तियां शामिल हैं।

यह प्रत्येक "डिप्टी" के लिए अधिकतम, अलग से गणना करता है:

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





window-functions