我正在尝试解决此查询,我必须找到每个部门的位置和每个位置的员工数量(不适用于部门,此数据库的常见查询(
SELECT DE.DLOCATION, count(E.DNO)
FROM DEPARTMENT D
INNER JOIN EMPLOYEE E ON D.DNUMBER = E.DNO
INNER JOIN DEPT_LOCATIONS DE ON DE.DNUMBER = E.DNO
GROUP BY DE.DLOCATION
/
这有效,但这向我显示了每个部门的员工人数(可能重复该值(
如何获取位置而不是部门的员工人数?
编辑:查询有效,我实际上得到了每个位置的员工人数,但在每个城市都有不止一个部门,所以如果在休斯顿的"软件"部门有 14 名员工,那么在舒格兰的"软件"部门,它再次向我显示 14 名员工,所以查询有效,但不是每个位置, 它适用于每个部门。无论如何,感谢您的帮助,我很感激
你离解决方案更近了。由于您尚未发布有关这些表中其他列的信息,例如员工 ID 或编号。按照您所拥有的,请尝试:
SELECT E.DNO, DE.DLOCATION, count(E.DNO)
FROM DEPARTMENT D
INNER JOIN EMPLOYEE E
ON D.DNUMBER = E.DNO
INNER JOIN DEPT_LOCATIONS DE
ON DE.DNUMBER = E.DNO
GROUP BY E.DNO,DE.DLOCATION
您的查询应该按书面形式工作,如果我没有错,您需要的是distinct
。
SELECT DE.DLOCATION, COUNT(distinct E.DNO) as NoOfEmps
FROM DEPARTMENT D INNER JOIN
EMPLOYEE E
ON D.DNUMBER = E.DNO INNER JOIN
DEPT_LOCATIONS DE
ON DE.DNUMBER = E.DNO
GROUP BY DE.DLOCATION;
也许你需要:
SELECT DE.DLOCATION, COUNT(*) as NoOfEmps
. . .
SQL> SELECT D.loc, COUNT(E.Deptno) as NoOfEmps
2 FROM DEPT D INNER JOIN EMP E
3 ON D.DEPTNO = E.DEPTNO
4 GROUP BY D.LOC;
LOC NOOFEMPS
------------- ----------
NEW YORK 3
CHICAGO 6
DALLAS 5