मैं एक प्रश्न है कि मैं वर्तमान में उपयोग कर रहा हूँ परिष्कृत करने के लिए कोशिश कर रहा हूँ ग्रुप के साथ सशर्त COUNT:MySQL - द्वारा
SELECT `puid`,
COUNT(DISTINCT `droid_v`) AS DROID,
COUNT(DISTINCT `sig_v`) AS sig,
SUM(NoExt) AS hits
FROM temp
GROUP BY `puid`
और मैं केवल droid_v
गिनती जहां droid_V
से अधिक 0. यह है है करने के लिए इसे प्राप्त करने की आवश्यकता इस तरह की गिनती की स्थिति के लिए संभव है? फिलहाल, यह शून्य मानों को गिनती के रूप में गिन रहा है, और मैं वास्तव में शून्य को null
मानों में नहीं बदल सकता।
मुझे droid_V
= 0 के लिए गिनती मूल्य जानने की आवश्यकता नहीं है, तो मुझे इसकी गणना करने की आवश्यकता है यदि उसके पास 0 से अधिक संख्या है। वह संख्या हमेशा 0, 1, 2, 3, या 4 होगी।
मैं कोशिश की है:
SELECT `puid`,
COUNT(DISTINCT CASE WHEN `droid_v` > 0 THEN 1 END) AS DROID,
COUNT(DISTINCT `sig_v`) AS sig,
SUM(`NoExt`) AS hits
FROM temp
GROUP BY `puid`
लेकिन यह एक द्विआधारी परिणाम देता है (या तो 0 या 1) गिनती मैं उम्मीद कर रहा हूँ नहीं।
उदाहरण उत्पादन =
puid DROID sig hits
No PUID 1 1 252
x-fmt/92 1 5 1008
प्रत्याशित उत्पादन:
puid DROID sig hits
No PUID 1 1 252
x-fmt/92 3 5 1008
नमूना डेटा:
id;puid;droid_v;sig_v;speed;Ext;NoExt;tally
1;"No PUID";"3";"v13";"SLOW";"0";"63";"63"
2;"x-fmt/92";"3";"v13";"SLOW";"63";"0";"63"
3;"x-fmt/92";"3";"v37";"SLOW";"63";"63";"126"
4;"x-fmt/92";"3";"v45";"SLOW";"63";"63";"126"
5;"x-fmt/92";"3";"v49";"SLOW";"63";"63";"126"
6;"x-fmt/92";"3";"v50";"SLOW";"63";"63";"126"
7;"x-fmt/92";"5";"v13";"SLOW";"63";"0";"63"
8;"No PUID";"5";"v13";"SLOW";"0";"63";"63"
9;"x-fmt/92";"5";"v37";"SLOW";"63";"63";"126"
10;"x-fmt/92";"5";"v45";"SLOW";"63";"63";"126"
11;"x-fmt/92";"5";"v49";"SLOW";"63";"63";"126"
12;"x-fmt/92";"5";"v50";"SLOW";"63";"63";"126"
13;"No PUID";"6";"v13";"FAST";"0";"63";"63"
14;"x-fmt/92";"6";"v13";"SLOW";"63";"0";"63"
15;"No PUID";"6";"v13";"SLOW";"0";"63";"63"
16;"x-fmt/92";"6";"v13";"FAST";"63";"0";"63"
17;"x-fmt/92";"6";"v37";"SLOW";"63";"63";"126"
18;"x-fmt/92";"6";"v37";"FAST";"63";"63";"126"
19;"x-fmt/92";"6";"v45";"FAST";"63";"63";"126"
20;"x-fmt/92";"6";"v45";"SLOW";"63";"63";"126"
21;"x-fmt/92";"6";"v49";"FAST";"63";"63";"126"
22;"x-fmt/92";"6";"v49";"SLOW";"63";"63";"126"
23;"x-fmt/92";"6";"v50";"FAST";"63";"63";"126"
24;"x-fmt/92";"6";"v50";"SLOW";"63";"63";"126"
क्या आप 'WHERE' क्लॉज जोड़ सकते हैं? आपके द्वारा प्रदान किए गए उदाहरण से –
, आपका अपेक्षित परिणाम क्या है? –