2011-10-05 9 views
5

मान लें कि निम्नलिखित मेरी मेज हैमुझे पंक्तियों की संख्या कैसे मिलती है जिनमें डुप्लिकेट कॉलम हैं?

id | name | topic | reply 
... 
1 | user1 | 00001 | yes    ## replied on topic 00001 
2 | user2 | 00002 | yes    ** replied on topic 00002 
3 | user1 | 00001 | yes    ## replied on topic 00001 
4 | user5 | 00001 | no 
5 | user1 | 00001 | yes    ## replied on topic 00001 
6 | user1 | 00002 | no 
7 | user2 | 00002 | yes    ** replied on topic 00002 
8 | user3 | 00001 | no 
9 | user4 | 00002 | yes 

कल्पना कीजिए कि यह एक विषय तालिका है करते हैं। केवल एक ही विषय पर उपयोगकर्ता उपयोगकर्ता और उपयोगकर्ता उत्तर एक से अधिक बार (विषय 00001 और 00002) मैं एक से अधिक विषयों पर उत्तर देने वाले उपयोगकर्ता की संख्या का चयन कैसे कर सकता हूं, जो 5

उत्तर

3

से 2 लौटाएगा

SELECT COUNT(DISTINCT name) 
FROM (
    SELECT name 
    FROM yourtable 
    WHERE reply = 'yes' 
    GROUP BY name, topic 
    HAVING COUNT(*) > 1 
) T1 
+0

वाह, धन्यवाद आदमी। मुझे इस तरह की क्वेरी लिखने के लिए एक दिन बिताना होगा। :) –

3

सबसे पहले आप विषय प्रति उपयोगकर्ता प्रति उत्तरों की संख्या से काम करते हैं और उसके बाद अलग-अलग उपयोगकर्ताओं के लिए एक से अधिक जबाब है की संख्या गिनती की जरूरत है: उन है कि एक विषय पर एक बार से अधिक ने कहा की संख्या किसी भी विषय।

SELECT COUNT(DISTINCT name) FROM (
    SELECT name, topic, count(*) replies 
    FROM table 
    WHERE reply = 'yes' 
    GROUP BY name, topic 
) a 
WHERE replies > 1 
+0

@ मार्कबियर, धन्यवाद। –

संबंधित मुद्दे