2011-10-05 23 views
5

powiedzmy, że po to mój stółJak uzyskać liczbę wierszy z duplikatami kolumn?

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 

Wyobraźmy sobie, że jest to tabela temat. Tylko użytkownik1 i odpowiedź użytkownika na jeden temat więcej niż jeden raz (temat 00001 i 00002) Jak mogę wybrać numer użytkownika, który odpowiedział na dany temat więcej niż jeden raz, który powinien powrócić 2 z 5

Odpowiedz

3

To da ci liczba użytkowników, którzy odpowiedzieli więcej niż raz na temat:

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

Wow, dzięki człowieku. Musiałbym spędzić dzień, by samemu napisać tego rodzaju zapytanie. :) –

3

najpierw trzeba wypracować liczbę odpowiedzi za użytkownika temacie, a następnie policzyć liczbę różnych użytkowników, którzy mają więcej niż jedną odpowiedź dla dowolny temat.

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

@MarkByers, dzięki. –

Powiązane problemy