2011-10-05 26 views
5

chúng ta hãy nói rằng đây là bàn của tôiLàm cách nào để nhận được số hàng có cột trùng lặp?

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 

Hãy tưởng tượng rằng đây là một bảng đề. Chỉ user1 và trả lời của người dùng về một chủ đề nhiều lần (chủ đề 00001 và 00002) Làm cách nào tôi có thể chọn số lượng người dùng trả lời trên một chủ đề nhiều lần, trả về 2 từ 5

Trả lời

3

Điều này sẽ cung cấp cho bạn số lượng người dùng mà trả lời nhiều lần trên một chủ đề:

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

Wow, cảm ơn người đàn ông. Tôi sẽ phải dành một ngày để viết loại truy vấn này một mình. :) –

3

Trước tiên, bạn cần phải làm việc ra số trả lời cho mỗi người dùng mỗi chủ đề và sau đó đếm lên số lượng người dùng riêng biệt mà có nhiều hơn một câu trả lời cho bất kỳ chủ đề nào.

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, cảm ơn. –

Các vấn đề liên quan