PARTITION BY
क्लॉज रिकॉर्ड्स की रेंज सेट करता है जिसका उपयोग प्रत्येक "ग्रुप" के लिए OVER
. के भीतर किया जाएगा खंड।
आपके उदाहरण में SQL, DEPT_COUNT
प्रत्येक कर्मचारी रिकॉर्ड के लिए उस विभाग के भीतर कर्मचारियों की संख्या लौटाएगा। (ऐसा लगता है जैसे आप emp
. को नामांकित कर रहे हैं टेबल; आप अभी भी emp
. में हर रिकॉर्ड लौटाते हैं टेबल।)
emp_no dept_no DEPT_COUNT
1 10 3
2 10 3
3 10 3 <- three because there are three "dept_no = 10" records
4 20 2
5 20 2 <- two because there are two "dept_no = 20" records
यदि कोई अन्य स्तंभ था (उदा., state
) तो आप गिन सकते हैं कि उस राज्य में कितने विभाग हैं।
यह एक GROUP BY
. के परिणाम प्राप्त करने जैसा है (SUM
, AVG
, आदि) परिणाम सेट को एकत्रित किए बिना (यानी मिलान रिकॉर्ड को हटाकर)।
यह तब उपयोगी होता है जब आप LAST OVER
. का उपयोग करते हैं या MIN OVER
उदाहरण के लिए, विभाग में सबसे कम और उच्चतम वेतन प्राप्त करने के लिए कार्य करता है और फिर इसका उपयोग इस रिकॉर्ड वेतन के खिलाफ गणना में करता है बिना एक उप-चयन, जो बहुत तेज़ है।
अधिक जानकारी के लिए लिंक किया गया आस्कटॉम लेख पढ़ें।