【问题标题】:How can I get the count of total duplicate rows?如何获得总重复行数?
【发布时间】:2018-06-06 17:53:03
【问题描述】:

假设,我有一个表“Employee

|  id  | Name  |
----------------
|   1  |  AAA  |
----------------
|   1  |  AAA  |
----------------
|   2  |   BBB |
----------------
|   2  |  BBB  |
----------------
|   2  |  BBB  |
----------------

我想计算重复的行,所以结果将是 5(总共 2 和 3)

我尝试的查询是:-

select count(id)
from Employee
group by id
having count(id) > 1

按预期给出输出:-

  | 2 |
   -----
   | 3 |
   -----

我怎样才能达到总数,我的意思是 5

【问题讨论】:

  • 对计数求和(id)
  • 哪个 dbms???

标签: sql database group-by


【解决方案1】:

最简单的方法是将其包装在另一个查询中:

SELECT SUM(counts) 
FROM (
select count(id) counts
from Employee
group by id
having count(id) > 1) inner_query

编辑:

更复杂的方法是在同一语句中使用group bysum window functiondistinct 以避免内部子查询。

SELECT DISTINCT SUM(COUNT(id)) OVER () count_duplicates
FROM Employee
GROUP BY id
HAVING COUNT(id) > 1

【讨论】:

  • 谢谢,我想要通用解决方案,没有特定的数据库。所以我执行了第一个,它给出了错误:- ')' 附近的语法不正确,它是最后一行
  • 您使用的是什么数据库?上面的语句在 postgresql & mssql 中绝对有效
  • @BlackCat,第一个语句在mysql上也有效。
  • 是sql server
  • 抱歉,现在可以使用了!我忘了添加“inner_query”,谢谢
猜你喜欢
  • 2022-11-29
  • 1970-01-01
  • 2018-11-24
  • 2013-04-22
  • 2017-06-04
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多