我有两个表,分别称为instructor
和department
。我正在努力计算每个部门可用的讲师人数。我将附上数据库表的屏幕快照。
我们如何使用SQL查询来计算每个部门可用的讲师数量?
而且,在同一查询中,我想显示所有部门。
是否可以通过单个查询列出所有具有教师人数的部门?
答案 0 :(得分:1)
您必须使用join
,查询必须如下所示:
select d.department_id, count(i.instructor_id) as "instructors count"
from department as d
left join instructor as i on d.department_id = i.department_id
group by d.department_id;
答案 1 :(得分:1)
我同意弗拉基米尔·科帕克(Vladimir Kovpak)的观点。假设讲师表中的某些讲师可能不在部门表中。如果它们都包含在部门表中,则可以使用内部联接(将LEFT JOIN更改为JOIN)。您实际上可以使用如下临时表来测试Vladimir Kovpak答案:
--recreate @instructor table
declare @instructor table (instructureid int, instructor_name varchar(10), department_id int, instructor_first_name varchar(10))
insert into @instructor
select 1, 'instr1', 1, 'test1' union all
select 2, 'instr2' , 2, 'test2' union all
select 3, 'instr3', 2, 'test3'
--recreate @department table
declare @department table (department_id int, department_name varchar(10))
insert into @department
select 1, 'maths' union all
select 2, 'computer'
select dpt.department_id,dpt.department_name, numInst=COUNT(instructureid)
from
@instructor ins
LEFT JOIN @department dpt ON
dpt.department_id=ins.department_id
group by
dpt.department_id,dpt.department_name