Sql 统计Oracle中特定的重复项
您好,我无法计算电话号码(PhoneNum)也分配给其他员工的员工人数(EmpID)。但仅适用于特定组织(OrgID) 我的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
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;