2012-10-02 28 views
1

如何使用以下数据结构使用计数功能获取每个部门的员工人数,查询字段为Dept_id,Dept_name,Number of employees如何使用count语句从sql server中的多个表中获取信息?

create database Emp_det 

create table Dept 
(
    Dept_ID int not null primary key, 
    Dept_name varchar(255) 
) 

create table Emp_table 
(
    Emp_no int not null primary key, 
    Emp_name varchar(255) not null, 
    Dept_ID int foreign key references Dept(Dept_ID), 
    Emp_status varchar(255) 
) 

create table Salary_table 
(
    Emp_no int not null foreign key references Emp_table(Emp_no), 
    From_date datetime, 
    End_date datetime, 
    Basic int, 
    HRA int, 
    Others int, 
    Total int, 
    Emp_status varchar(255), 

    constraint pk_emp_det primary key (emp_no,From_date) 
); 

insert into Dept 
values(10, 'I.T'), (11, 'H.R'),(12, 'Procurement'),(13, 'QS'); 

insert into Emp_table 
values(1111,'Manivannan','10','A'), 
(1222,'Faizal','10','A'), 
(4122,'Marzook','10','A'), 
(1223,'Venu','11','A'); 

insert into Salary_table 
values(1111,'01/09/2012','1/10/2012',10000,10000,2000,22000,'A'), 
(1222,'01/09/2012','1/10/2012',5000,5000,1000,11000,'A'), 
(4122,'01/09/2012','1/10/2012',1000,1000,5000,2500,'A'), 
(1223,'01/09/2012','1/10/2012',10000,10000,2000,22000,'A') 

回答

1
select 
     Dept_id, Dept_name,count(distinct Emp_no) as Number_of_employees 
    from 
     Dept d inner join 
     Emp_table e on 
     d.Dept_ID = e.Dept_ID 
    group by 
     Dept_id, Dept_name 

对不起,这样做是把我的头顶部。忘了那群人。

4
SELECT D.Dept_ID, D.Dept_Name, COUNT(*) NumberOfEmployees 
FROM Dept D 
LEFT JOIN dbo.Emp_Table ET 
ON D.Dept_ID = ET.Dept_ID 
GROUP BY D.Dept_ID, D.Dept_Name 

这将列出所有部门,即使没有员工。如果您只想要拥有员工的部门,则可以用INNER JOIN更改LEFT JOIN

+0

这是一个小提琴 - http://sqlfiddle.com/#!3/105b7/1 – Taryn

+0

@bluefeet - 非常感谢 – Lamak

相关问题