如何获得重复计数值的总和?

时间:2016-11-21 14:38:18

标签: sql sql-server

我有以下表格:

CandidateId   CandidateName
  can132        Mazhar
  can132        Mazhar
  can133        Raj
  can133        Raj
  can134        Rahul
  can134        Rahul
  can134        Rahul

我的SQL查询基于候选ID获取重复。

SELECT CandidateId, COUNT(*) as duplicate
FROM Table_CandidateInfo_Preview
GROUP BY CandidateId
HAVING COUNT(*) > 1
ORDER BY CandidateId

对,我的输出低于输出:

CandidateId     duplicate
 can132         2
 can133         2
 can134         3

我需要像最终值4这样的结果在我的存储过程中发送输出参数,因为三个候选ID有重复且cand132 1次,cand133 1次,{{1} 2次。总和将获得can134值。

3 个答案:

答案 0 :(得分:0)

将您的查询包装在派生表中(略微调整)。 SUM其重复值:

select sum(duplicate)
from
(
    SELECT CandidateId, COUNT(*) - 1 as duplicate
    FROM Table_CandidateInfo_Preview
    GROUP BY CandidateId
    HAVING COUNT(*) > 1
) dt

答案 1 :(得分:0)

你似乎想要:

SELECT SUM(duplicate - 1)
FROM (SELECT CandidateId, COUNT(*) as duplicate
      FROM Table_CandidateInfo_Preview
      GROUP BY CandidateId
      HAVING COUNT(*) > 1
     ) c;

我想要注意的是,如果每行都有唯一的ID,那么您也可以这样做:

select count(*)
from Table_CandidateInfo_Preview cip
where cip.id > (select min(cip2.id)
                from Table_CandidateInfo_Preview cip2
                where cip2.CandidateId = cip.CandidateId
               );

对我而言,这似乎更直接地计算了#34;重复"。我还应该注意到,某些数据库(例如SQLite,Oracle和Postgres)具有可用于此目的的一种或另一种形式的行标识符。

答案 2 :(得分:0)

cd android && ./gradlew clean
  1. 试试这个我觉得它会有所帮助