MySQL - 使用select / join / count()从表中提取信息

时间:2014-10-23 01:49:59

标签: mysql

我正在做一个MySQL家庭作业,我应该做的一件事是

  “显示部门代码以及分配给该部门的员工数量。”

我尝试了很多不同的命令,包括下面列出的命令,但我似乎无法根据下表得到正确的结果。

有关如何获取请求的子表的任何想法?我已经给出了下面的相关表格。

感谢。

select code,count(distinct employee) 
from (department 
left outer join Assignment on department.code = assignment.department);



说明|代码|名称|主管|建筑|
++++++++++++++++++++++++++++++++++++++++++++++++++ +++++

“text”| OPR |经营| 77881234 | BlockB |
“文字”| EMM |紧急| 54546677 | BLOCKa中|
“文字”| MDR |病历| 99778525 | BLOCKa中|

ASSIGNMENT

员工|部门| DateAssigned |角色|
++++++++++++++++++++++++++++++++++++++++++++++++++ +
54546677 | EMM | 01/15/2011 |主管|
54546677 | EMM | 2003年2月25日|医生|
77881234 | OPR | 02/15/2010 |主管|
77881234 | OPR | 2000年1月20日|医生|
77881234 | EMM | 02/20/1999 |医生|

3 个答案:

答案 0 :(得分:0)

这会给你你想要的。我也添加了部门名称。 GROUP BY子句将按部门对员工进行分组。 这将允许您计算员工数量。

SELECT 
(SELECT d.name FROM Department d WHERE d.Code = a.Department) AS DeptName,
a.Code as DeptCode,
COUNT(a.Employee) AS NumberOfEmployees
FROM assignment a
GROUP BY a.Department

答案 1 :(得分:0)

您是否尝试使用group by子句?

答案 2 :(得分:0)

SELECT d.code, COUNT(DISTINCT a.employee) AS employee_count
FROM Department AS d
LEFT JOIN Assignment AS a ON d.code = a.department
GROUP BY d.code

您需要使用GROUP BY来获取每个部门的计数。

DEMO