यदि droid_v केवल 0, 1, 2, 3, या 4 हो सकता है, तो COUNT(DISTINCT) कभी भी 5 से अधिक नहीं लौटाएगा, क्योंकि केवल पाँच संभावित मान हैं। क्या तुम यही चाहते हो? अगर ऐसा है, तो इसे आजमाएं:
SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v ELSE 0 END) - 1 AS droid /* -1 for the case where droid_v is 0 */
, COUNT(DISTINCT sig_v) AS sig
, SUM(NoExt) AS hits
अपडेट करें: ओह, क्षमा करें, उपरोक्त बिल्कुल सही नहीं है क्योंकि हो सकता है कि हो . न हो एक शून्य। यह होना चाहिए:
SELECT puid, COUNT(DISTINCT CASE WHEN droid_v > 0 THEN droid_v END) AS droid
अगर, दूसरी ओर, आप उन सभी पंक्तियों की गिनती चाहते हैं जहां droid_v> 0, तो मुझे लगता है कि आप यह चाहते हैं:
SELECT puid, SUM(CASE WHEN droid_v > 0 THEN 1 ELSE 0 END) AS droid
, COUNT(DISTINCT sig_v) AS sig
, SUM(NoExt) AS hits
आशा है कि यह मदद करता है।