विशिष्ट मानों के लिए SUM() का उपयोग करके SQL में पंक्तियों को समूहीकृत करना
अपनी MySQL क्वेरी में, आप एक मान के योग की गणना करना चाहते हैं रूपांतरण तालिका यह सुनिश्चित करते हुए कि प्रत्येक पंक्ति को केवल एक बार गिना जाता है। इसे प्राप्त करने के लिए, आप SUM() फ़ंक्शन के संयोजन में DISTINCT कीवर्ड का उपयोग कर रहे हैं। हालाँकि, आप एक समस्या का सामना कर रहे हैं जहाँ डुप्लिकेट पंक्तियाँ SUM() परिणाम को बढ़ा रही हैं।
इस समस्या को हल करने के लिए, अपनी तालिकाओं में प्राथमिक कुंजी संबंधों पर विचार करें। यदि रूपांतरण.आईडी रूपांतरण तालिका की प्राथमिक कुंजी है और stats.id सांख्यिकी तालिका की प्राथमिक कुंजी है, तो प्रत्येक रूपांतरण.आईडी एक एकल लिंक.आईडी के लिए अद्वितीय है।
इस समझ के आधार पर, आप प्रत्येक अलग-अलग कन्वर्ज़न.आईडी के लिए कन्वर्ज़न.वैल्यू के योग की गणना करने के लिए अपनी क्वेरी को पुनर्गठित कर सकते हैं, और फिर परिणाम को प्रत्येक links.id समूह के भीतर पंक्तियों की कुल संख्या से विभाजित कर सकते हैं। यह आपको विशिष्ट मानों का वांछित योग प्रदान करेगा।
यहां संशोधित क्वेरी है:
SELECT links.id,
count(DISTINCT stats.id) as clicks,
count(DISTINCT conversions.id) as conversions,
sum(conversions.value)*count(DISTINCT conversions.id)/count(*) as conversion_value
FROM links
LEFT OUTER JOIN stats ON links.id = stats.parent_id
LEFT OUTER JOIN conversions ON links.id = conversions.link_id
GROUP BY links.id
ORDER BY links.created desc;
इस क्वेरी को प्रभावी रूप से प्रत्येक links.id समूह के भीतर प्रत्येक विशिष्ट रूपांतरण.आईडी के लिए रूपांतरणों के योग की गणना करनी चाहिए, यह सुनिश्चित करते हुए कि प्रत्येक पंक्ति की गणना केवल एक बार की जाती है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3