求sql语句。
表a
部门序号 部门名称
1 办公室
2 人事处
表b
id 姓名 部门
1 王x 1
2 李x 1
3 刘x 2
4 张x 2
表c
序号 员工id 得分
1 1 2
2 2 3
3 3 5
4 4 2
求'办公室'的人均得分.
[解决办法]
create table 表a(部门序号 int, 部门名称 varchar(20))
insert into 表a
select 1 ,'办公室' union all
select 2 ,'人事处'
create table 表b(id int, 姓名 varchar(20), 部门 int)
insert into 表b
select 1 ,'王x', 1 union all
select 2 ,'李x', 1 union all
select 3 ,'刘x', 2 union all
select 4 ,'张x', 2
create table 表c(序号 int, 员工id int, 得分 int)
insert into 表c
select 1 ,1, 2 union all
select 2 ,2, 3 union all
select 3 ,3, 5 union all
select 4 ,4, 2
go
select (select SUM(c.得分) * 1.0 / COUNT(*)
from 表a a
inner join 表b bb
on a.部门序号 = bb.部门
left join 表c c
on c.员工id = bb.id
where a.部门序号 = b.部门)
from 表b b
where b.id = 1
/*
2.500000000000
*/
办公室2个人,结果就是(2+3+2.5+1.3)/2=4.4
create table 表a(部门序号 int, 部门名称 varchar(20))
insert into 表a
select 1 ,'办公室' union all
select 2 ,'人事处'
create table 表b(id int, 姓名 varchar(20), 部门 int)
insert into 表b
select 1 ,'王x', 1 union all
select 2 ,'李x', 1 union all
select 3 ,'刘x', 2 union all
select 4 ,'张x', 2
create table 表c(序号 int, 员工id int, 得分 numeric(10,2))
insert into 表c
select 1 ,1, 2 union all
select 2 ,2, 3 union all
select 3 ,3, 5 union all
select 4 ,4, 2 union all
select 5 ,1, 2.5 union all
select 6 ,1, 1.3
go
select (select SUM(c.得分) * 1.0 / COUNT(distinct bb.id)
from 表a a
inner join 表b bb
on a.部门序号 = bb.部门
left join 表c c
on c.员工id = bb.id
where a.部门序号 = b.部门)
from 表b b
where b.id = 1
/*
4.400000
*/