Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में ओवर क्लॉज

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



  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 क्लाइंट और नेटवर्किंग घटक नहीं मिले

  2. Oracle में राउंड (संख्या) फ़ंक्शन

  3. Oracle में मेरिडीम इंडिकेटर (AM/PM) को टाइम वैल्यू में कैसे जोड़ें

  4. ADDM टास्क कैसे बनाएं और उसकी रिपोर्ट कैसे चेक करें

  5. पर्ल डीबीआई - एकाधिक कथनों के साथ SQL स्क्रिप्ट चलाएं