计算重复记录

时间:2014-04-27 14:06:04

标签: php mysql

假设我有一个名为studens的表。

students table

我想知道有多少学生至少获得2次重复分数。 请帮帮我,谢谢。

我期望的结果是:Jonh有100次得分,James有80次得分,Julia有50次得分2次。因此,获得重复分数至少2次的学生数量为3(Jonh,Jam和Julia)。

3 个答案:

答案 0 :(得分:2)

select count(*) from
(
    select name
    from your_table
    group by name, score
    having count(*) > 1
) x

答案 1 :(得分:1)

根据编辑,您的查询将是:

select distinct name
from students
group by name, score
having count(*) > 1;

您可以通过以下方式查看得分和计数:

select name, score, count(*)
from students
group by name, score
having count(*) > 1;

顺便说一句,第一个查询是select distinct适合group by的极少数时间之一。我认为第二个查询提供了更多信息。

答案 2 :(得分:1)

假设学生每个科目只有一个分数(即name, subject是唯一的):

SELECT COUNT(DISTINCT t1.name)
FROM scores t1
    INNER JOIN scores t2
    ON t1.name = t2.name
    AND t1.subject <> t2.subject
    AND t1.score = t2.score

<强> SQLFiddle