बुरे शीर्षक के लिए क्षमा याचना, मुझे यकीन नहीं था कि इसके लिए एक अच्छा शीर्षक क्या होगा।
यह वर्तमान में (मेरे द्वारा काम कर रहे) डेटा का सरलीकृत दृश्य है
Agent | Commission
---------|------------
Smith | 100
Neo | 200
Morpheus | 300
मुझे कुल कमीशन के प्रतिशत की गणना करने की आवश्यकता है, प्रत्येक एजेंट के लिए जिम्मेदार है।
इसलिए, एजेंट स्मिथ के लिए, प्रतिशत की गणना की जाएगी (Agent Smith's commission / Sum(commission)*100
तो, मेरा अपेक्षित डेटा होगा
Agent | Commission | % Commission
---------|---------------|---------------
Smith | 100 | 17
Neo | 200 | 33
Morpheus | 300 | 50
मेरे पास प्रत्येक एजेंट के लिए कमीशन लौटाने का एक फ़ंक्शन है। मेरे पास एक और फ़ंक्शन है जो प्रतिशत के रूप में लौटाता है (Commission/Sum(Commission))*100
। समस्या यह है कि Sum(commission)
प्रत्येक पंक्ति के लिए गणना की जाती है, और यह देखते हुए कि यह क्वेरी डेटा वेयरहाउस पर चलाई जाएगी, डेटा सेट बड़ा होगा (वर्तमान में, यह सिर्फ 2000 रिकॉर्ड के तहत है) और काफी ईमानदारी से, एक बुरा दृष्टिकोण (आईएमओ) )।
वहाँ Sum(Commission)
हर पंक्ति के लिए गणना नहीं होने का एक तरीका है ?
मैं 2 भाग की क्वेरी की तर्ज पर कुछ सोच रहा था, पहला भाग sum(commission)
एक पैकेज चर / प्रकार में लाएगा और दूसरा भाग इस पूर्व-परिकलित मान को संदर्भित करेगा, लेकिन मुझे यकीन नहीं है कि मैं इसे कैसे पूरा कर सकता हूं।
मैं SQL का उपयोग करने के लिए सीमित हूं, और मैं Oracle 10g R2 पर चल रहा हूं।