2012-02-11 11 views
11

मैं का एक सरल तालिका स्थापित करता है। शून्य नहीं - फिर, स्लॉट का इस्तेमाल किया। मुझे किसी दिए गए उत्पाद और ईमेल के लिए कुल इंस्टॉल का परिणाम देना होगा, साथ ही किसी दिए गए उत्पाद और ईमेल के लिए प्रयुक्त इंस्टॉल का नतीजा होगा। मुझे लगता है कि मैं इसे दो प्रश्नों के साथ कर सकता हूं, लेकिन सोच रहा हूं कि क्या ऐसा करने के लिए एसक्यूएल तरीका है?MySQL - मैं नल और नल की गणना कैसे करूं?</p> <ul> <li>prod_code</li> <li>ईमेल</li> <li>install_slot</li> </ul> <p>तो install_slot शून्य है, तो यह एक उपलब्ध स्लॉट स्थापित है:

मैंने जंगली अनुमान के रूप में निम्नलिखित की कोशिश की, लेकिन काम नहीं किया। केवल

SELECT 
    i1.`prod_code`, 
    COUNT(i1.`email`) AS total_installs, 
    COUNT(ISNULL(i2.`install_slot`)) AS used_installs 
FROM 
    `installs` AS i1 
JOIN 
    `installs` AS i2 
ON 
    i1.`prod_code` = i2.`prod_code` 
WHERE 
    i1.`email` = '[email protected]' 
GROUP BY 
    i1.`prod_code`,i2.`prod_code` 
+1

मैं आपको समझ नहीं पा रहा हूं, हल्कापन। "मुझे लगता है" से शुरू होने वाले प्रश्न चिह्न के साथ वाक्य का क्या हिस्सा आपको समझ में नहीं आता है? – Volomike

+0

इसमें से कोई भी नहीं। मैं उस वाक्य के बारे में बात नहीं कर रहा हूं, मैं हूं। –

+0

हू? मैं अभी भी आपका अनुसरण नहीं करता हूं। – Volomike

उत्तर

24
SELECT prod_code, 
     COUNT(email) AS total_installs, 
     COUNT(install_slot) AS used_installs 
FROM installs 
WHERE email='[email protected]' 
GROUP BY prod_code 

COUNT मायने रखता है NOT NULL मूल्यों।

+0

वाह। मुझे आश्चर्य है कि वास्तव में काम किया। मेरे दिमाग में ऐसा लगता है जैसे यह काम नहीं करेगा, लेकिन यह करता है। – Volomike

+0

@ कक्षा में लाइटनेस रेस: क्या यह 'काम किया' कहने की भी एक बुरी आदत है? –

3

प्रस्तावित समाधान मेरे लिए काम नहीं करता है। मुझे निम्नानुसार संशोधित करना पड़ा:

SELECT prod_code, 
     COUNT(NULLIF(email,'')) AS total_installs, 
     COUNT(NULLIF(install_slot,'')) AS used_installs 
FROM installs 
WHERE email='[email protected]' 
GROUP BY prod_code 
संबंधित मुद्दे