具有重复电子邮件 ID 的不同行数

Posted

技术标签:

【中文标题】具有重复电子邮件 ID 的不同行数【英文标题】:Count of distinct rows with duplicate email IDs 【发布时间】:2011-03-19 02:29:22 【问题描述】:

如何在 SQL 中获取具有重复电子邮件 ID 的不同行的计数?

ID   NAME   EMAIL 
1    John   asd@asd.com 
2    Sam    asd@asd.com 
4    Bob    bob@asd.com 
5    Tom    asd@asd.com 
6    Rob    bob@asd.com
7    Tic    tic@asd.com
8    Dad    dad@asd.com

查询应该返回 2。 asd@asd.com 和 bob@asd.com 是重复的

SELECT 
 COUNT(*)  
FROM Users
GROUP BY EMail 
HAVING ( COUNT(EMAIL) > 1 )    

这个查询返回了一些奇怪的结果。 谢谢

【问题讨论】:

【参考方案1】:

行数:

select sum(cnt)
from (select count(*) as cnt
    from Users
    group by email
    having count(*) > 1) T

电子邮件数量:

select count(*)
from (select count(*) as cnt
    from Users
    group by email
    having count(*) > 1) T

两者兼而有之:

select count(*) as COUNT_EMAIL sum(cnt) as COUNT_ROWS
from (select count(*) as cnt
    from Users
    group by email
    having count(*) > 1) T

以上应该适用于 SQL Server 和 Oracle。

【讨论】:

以上是关于具有重复电子邮件 ID 的不同行数的主要内容,如果未能解决你的问题,请参考以下文章