【问题标题】:SQL query get all duplicate records with countSQL查询获取计数的所有重复记录
【发布时间】:2016-07-01 00:24:44
【问题描述】:

我有一个表,其中某列 (state) 中有重复数据。我需要获取所有行并显示重复记录的COUNT()

样本数据

name     state  email
----     ----   -----
john     ny     john@ny.com
smith    ny     smith@ny.com
bryan    nj     bryan@nj.com

我需要编写一个 SQL 查询来显示这样的记录,其中包括每行上重复的 state 值的数量:

name     state  email         count
----     ----   -----         -------
john     ny     john@ny.com      2
smith    ny     smith@ny.com     2
bryan    nj     bryan@nj.com     1

【问题讨论】:

  • 您使用的是 MySQL 还是 SQL Server?它们是一回事。
  • 您在寻找 MySQL 解决方案还是 Microsoft SQL Server 解决方案?您已经标记了两个 RDBM 系统。
  • 我正在使用 sql server
  • 谢谢大家。它奏效了。

标签: sql sql-server


【解决方案1】:

您可以在State PARTITION 上使用COUNT(*) 来做到这一点:

Select  name, state, email,
        Count(*) Over (Partition By State) As Count
From    YourTable

【讨论】:

    【解决方案2】:
    DECLARE @Table1 TABLE 
        (name varchar(5), state varchar(2), email varchar(12))
    ;
    
    INSERT INTO @Table1
        (name, state, email)
    VALUES
        ('john', 'ny', 'john@ny.com'),
        ('smith', 'ny', 'smith@ny.com'),
        ('bryan', 'nj', 'bryan@nj.com')
    ;
    

    脚本

    SQL 服务器

     select  name,state,email,COUNT(state)OVER(PARTITION BY state  )Cnt from @Table1
    

    MySQL

    Select T.name, T.state, T.email,TT.cnt from @Table1 T
    INNER JOIN (select COUNT(state)cnt,state from @Table1
    GROUP BY state)TT
    ON T.state = TT.state
    ORDER BY cnt Desc
    

    【讨论】:

    • 欢迎@user2459457,如果有用的话,把它标记为正确答案
    【解决方案3】:

    你可以在聚合上使用 from

            select state, count, b.name, b.email from 
            ( select a.state as state , a.count(*) as count
            from my_table as a 
            group by a.state ) t 
            inner join my_table as b on b.state = t.state
    

    【讨论】:

      【解决方案4】:

      要获得您呈现的显示:

      SELECT name ,
             [state] ,
             email, 
             COUNT(*) OVER (PARTITION BY state) as [count]
             FROM myTable
             ORDER BY [state] DESC;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-23
        • 1970-01-01
        • 2014-01-21
        • 1970-01-01
        • 2012-03-08
        相关资源
        最近更新 更多