SQL 查询:每个部门的位置以及在每个位置工作的员工人数

  • 本文关键字:位置 工作 查询 个部 SQL sql oracle
  • 更新时间 :
  • 英文 :


我正在尝试解决此查询,我必须找到每个部门的位置和每个位置的员工数量(不适用于部门,此数据库的常见查询(

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

最新更新