SQL QUERY:每个部门的位置以及每个位置的员工数量

时间:2018-06-18 14:32:24

标签: sql oracle

我试图解决此问题,我必须找到每个部门的位置和每个位置的员工数量(不是部门,此数据库的常见查询)

foreach (DataGridViewColumn c in dataGridView1.Columns)
{
    if (c.ValueType == typeof(double))
    {
        c.DefaultCellStyle.Format = "C2";
        c.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
    }
}

这有效但这显示了每个部门的员工数量(可能重复该值)

我如何获得地点而非部门的员工数量?

编辑:查询有效,我实际上得到每个位置的员工人数,但在每个城市都有不止一个部门,所以如果在'软件'休斯顿的部门有14名员工,然后再次使用“软件”。 Sugarland的部门向我展示了14名员工,因此查询有效但不是按位置,每个部门都有效。无论如何,谢谢你的帮助,我很感激

2 个答案:

答案 0 :(得分:0)

您更接近解决方案。由于您尚未在这些表中发布其他列,例如员工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

答案 1 :(得分:0)

如果我没有错,您的查询应该按照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
. . .