编辑:从下面的评论中采取/推断的模式
create table #employees
(
Emp_ID int,
Name varchar(50),
Dept_ID int,
);
create table #departments
(
Dept_ID int,
Dept_Name varchar(50)
);
如何计算在表部门中每个部门工作的表员工的员工数量,并包括所有没有员工的部门。
答案 0 :(得分:0)
由于您没有提供任何数据,请尝试以下内容,看看这是否适合您
创建表格,我不知道这是否与您的表格结构类似
CREATE TABLE tbl_EMPLOYEES (Empl_Name nvarchar(20), Dept nvarchar(15))
CREATE TABLE tbl_DEPARTMENT (Dept nvarchar(15))
填充这些表格
INSERT INTO tbl_EMPLOYEES Values ('James', 'Finance')
INSERT INTO tbl_EMPLOYEES Values ('Tim', 'HR')
INSERT INTO tbl_EMPLOYEES Values ('Sally', 'Finance')
INSERT INTO tbl_EMPLOYEES Values ('Bob', 'Sales')
INSERT INTO tbl_EMPLOYEES Values ('Sam', 'HR')
INSERT INTO tbl_EMPLOYEES Values ('James', 'Finance')
INSERT INTO tbl_DEPARTMENT Values ('Finance')
INSERT INTO tbl_DEPARTMENT Values ('HR')
INSERT INTO tbl_DEPARTMENT Values ('Sales')
INSERT INTO tbl_DEPARTMENT Values ('IT')
此查询将为您提供每个部门的人数
SELECT Dept, Count(Dept) AS Count
FROM
(
SELECT Dept
FROM tbl_EMPLOYEES
) AS Blah_Blah
GROUP BY Dept
答案 1 :(得分:0)
欢迎来到SO。
这个问题很容易解决。步骤如下:
将部门表加入Dept_ID
列的员工表。
SELECT
Dept_ID
和Count()
以及GROUP BY
Dept_ID
字段。
要返回没有员工的部门,您需要LEFT JOIN
此聚合到Dept_ID
列上的部门表。
要为没有员工的部门返回 0 的值,请使用ISNULL()
功能。
请使用您的架构查看以下示例脚本。请注意,此脚本是用T-SQL编写的,因为您没有提到您的服务器类型。
create table #employees
(
Emp_ID int,
Name varchar(50),
Dept_ID int,
);
create table #departments
(
Dept_ID int,
Dept_Name varchar(50)
);
insert into #employees
select 1, 'Pim', 1
union all
select 2, 'Salma', 2;
insert into #departments
select 1, 'IT'
union all
select 2, 'Marketing'
union all
select 3, 'Design'
select
d1.Dept_Name
,isnull(d2.EmployeeCount, 0) as EmployeeCount
from
#departments d1
left join
(
select
d.Dept_ID
,count(e.Dept_ID) as EmployeeCount
from
#departments d
join
#employees e
on e.Dept_ID = d.Dept_ID
group by
d.Dept_ID
)
d2
on d2.Dept_ID = d1.Dept_ID
drop table #employees
drop table #departments