【问题标题】:Count duplicate records计算重复记录
【发布时间】:2014-04-27 14:06:04
【问题描述】:

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

我想计算至少有 2 次重复分数的学生。 请帮助我,谢谢。

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

【问题讨论】:

  • 请编辑您的问题并显示您期望的结果。
  • 旁注:这可能会派上用场UPDATE table SET NAME = REPLACE(NAME,'Jonh','John')UPDATE table SET SUBJECT = REPLACE(SUBJECT,'Phisics','Physics') ;-)

标签: php mysql


【解决方案1】:
select count(*) from
(
    select name
    from your_table
    group by name, score
    having count(*) > 1
) x

【讨论】:

  • GROUP BY name, score:标准不是同一科目有两个条目,而是任何科目的得分都相同。
  • 感谢您的帮助。你能告诉我最后的x是什么意思吗?
  • @TapiYuki:你需要给每个子选择一个名字。我选择了x 作为别名。
  • @juergend:我明白了。感谢您的解释。
【解决方案2】:

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

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 的极少数情况之一。不过,我认为第二个查询提供了更多信息。

【讨论】:

    【解决方案3】:

    假设学生每个科目只有一个分数(即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

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 2021-11-30
      • 2012-09-13
      • 1970-01-01
      • 2022-10-04
      • 2014-11-07
      • 2012-10-26
      • 2017-09-19
      • 1970-01-01
      相关资源
      最近更新 更多