Sql 统计Oracle中特定的重复项

Sql 统计Oracle中特定的重复项,sql,oracle,Sql,Oracle,您好,我无法计算电话号码(PhoneNum)也分配给其他员工的员工人数(EmpID)。但仅适用于特定组织(OrgID) 我的Oracle表如下所示: TABLE OrgEmployees (OrgID, EmpID, ...) TABLE PhoneNums (ID, EmpID, PhoneNum, ...) 特定组织的示例数据: SELECT pn.EmpID, pn.PhoneNum FROM PhoneNums pn WHERE EmpID IN (SELECT DISTINCT Em

您好,我无法计算电话号码(PhoneNum)也分配给其他员工的员工人数(EmpID)。但仅适用于特定组织(OrgID)

我的Oracle表如下所示:

TABLE OrgEmployees (OrgID, EmpID, ...)
TABLE PhoneNums (ID, EmpID, PhoneNum, ...)
特定组织的示例数据:

SELECT pn.EmpID, pn.PhoneNum FROM PhoneNums pn
WHERE EmpID IN (SELECT DISTINCT EmpID FROM OrgEmployees oe
                WHERE oe.OrgID = 'XY');

EmpID   PhoneNum
723     963264
731     963264
973     963276
729     963276
103     963450
725     963450
722     963460
731     963460
722     963462
731     963462
427     995487
295     995487
771     123151
503     123151
721     963265
104     963266
上述数据集的正确结果应为14

我的尝试是这样的:

SELECT pn.PhoneNum, count(pn.EmpID) FROM PhoneNums pn
WHERE pn.EmpID IN (SELECT oe.EmpID FROM OrgEmployees oe
                   WHERE oe.OrgID = 'XY') 
GROUP BY pn.PhoneNum
HAVING count (*) > 1
ORDER BY pn.PhoneNum;
但是我怎么能考虑EmpID是否相同呢


提前谢谢你

我想你需要count(distinct):

我更倾向于使用
JOIN
而不是
中的
来编写这篇文章:

SELECT pn.PhoneNum, COUNT(DISTINCT pn.EmpID)
FROM PhoneNums pn JOIN
     OrgEmployees oe
     ON oe.OrgID = 'XY' AND pn.EmpID = oe.EmpID
GROUP BY pn.PhoneNum
HAVING COUNT(DISTINCT pn.EmpID) > 1
ORDER BY pn.PhoneNum;
SELECT pn.PhoneNum, COUNT(DISTINCT pn.EmpID)
FROM PhoneNums pn JOIN
     OrgEmployees oe
     ON oe.OrgID = 'XY' AND pn.EmpID = oe.EmpID
GROUP BY pn.PhoneNum
HAVING COUNT(DISTINCT pn.EmpID) > 1
ORDER BY pn.PhoneNum;