मॉड्यूल पाठ (2/4)
PARTITION BY के साथ समूहीकरण
PARTITION BY के साथ समूहीकरण
प्रत्येक पंक्ति पर वैश्विक गणना करना आसान है, लेकिन अक्सर यह पर्याप्त नहीं होता है। हम प्रत्येक पंक्ति पर मूल विवरण रखते हुए औसत प्रति श्रेणी या प्रति ग्राहक की गणना करना चाह सकते हैं।
यहीं पर OVER(...) क्लॉज के अंदर PARTITION BY आता है।
पार्टिशन बाय कैसे काम करता है
वैचारिक रूप से यह GROUP BY के समान व्यवहार करता है, लेकिन परिणाम में पंक्तियों को ढहाने के बजाय, यह केवल डेटा की "विंडो" की सीमा को परिभाषित करता है जिस पर फ़ंक्शन एकल पंक्ति के परिणाम की गणना करने के लिए काम करेगा।
SELECT
product_name,
category_id,
price,
AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;प्रत्येक उत्पाद पंक्ति अपना विवरण रखती है, और cat_avg_price कॉलम _उसी श्रेणी के उत्पादों तक सीमित औसत दिखाएगा।
'उत्पाद' तालिका से, 'आईडी', 'श्रेणी_आईडी' और 'मूल्य' निकालें। विंडो फ़ंक्शंस का उपयोग करके प्रत्येक 'श्रेणी_आईडी' के लिए 'मूल्य' के योग की गणना करते हुए एक 'श्रेणी_कुल' कॉलम जोड़ें।
संकेत दिखाएँ
SUM(कीमत) का उपयोग (श्रेणी_आईडी के अनुसार विभाजन) से अधिक करें।
3 प्रयासों के बाद समाधान उपलब्ध है
'समीक्षा' तालिका से, 'उत्पाद_आईडी', 'रेटिंग' और 'औसत_उत्पाद_रेटिंग' (उत्पाद द्वारा विभाजित औसत रेटिंग) दिखाएं। सभी पंक्तियाँ दिखाएँ.
संकेत दिखाएँ
AVG(रेटिंग) और उत्पाद_आईडी द्वारा विभाजन का उपयोग करें। यदि आवश्यक हो तो इसे NUMERIC पर कास्ट करें।
3 प्रयासों के बाद समाधान उपलब्ध है