34,576
社区成员
发帖
与我相关
我的任务
分享
select [工号],[姓名],[关系],(sum([分数])*1.0)/count(distinct [评分人姓名]) as Result from tb as t group by [工号],[姓名],[关系] having [关系]='上级'
create table tb(工号 nvarchar(10),姓名 nvarchar(10),评分人工号 nvarchar(10),评分人姓名 nvarchar(10),关系 nvarchar(10),评分项 int,分数 int)
insert into tb select 'A1','张三','B1','马六','上级',1,80
insert into tb select 'A1','张三','B1','马六','上级',2,60
insert into tb select 'A1','张三','B1','马六','上级',3,100
insert into tb select 'A1','张三','B2','李四','上级',1,70
insert into tb select 'A1','张三','B2','李四','上级',2,30
insert into tb select 'A1','张三','B2','李四','上级',3,70
insert into tb select 'A1','张三','B3','王五','同事',1,60
insert into tb select 'A1','张三','B3','王五','同事',2,60
insert into tb select 'A1','张三','B3','王五','同事',3,60
go
--按照姓名统计
select t.姓名 , 结果 = sum(t.分数)/(select count(distinct 评分人姓名) from tb where 关系 = '上级' and 姓名= t.姓名) from tb t where 关系 = '上级' group by t.姓名
/*
姓名 结果
---------- -----------
张三 205
(所影响的行数为 1 行)
*/
--不过我觉得还按照工号统计比较好,避免重名的。
select t.姓名 , 结果 = sum(t.分数)/(select count(distinct 评分人姓名) from tb where 关系 = '上级' and 工号 = t.工号 and 姓名= t.姓名) from tb t where 关系 = '上级' group by t.工号 , t.姓名
/*
姓名 结果
---------- -----------
张三 205
(所影响的行数为 1 行)
*/
drop table tb
select t1.姓名,平均分=t1.总分*1.0/t2.数量
from
(select 姓名,sum(分数) 总分 from tb where 关系 = '上级' group by 姓名)t1
inner join
(select 姓名,评分人姓名,count(distinct 评分人姓名)数量 from tb where 关系 = '上级' group by 姓名,评分人姓名)t2
t1.姓名=t2.姓名
select 工号,姓名,sum(分数)/count(distinct 评分人工号) as 平均分
from 表 where 关系='上级'
group by 工号,姓名
select [工号],[姓名],(SUM([分数])/NULLIF(COUNT(distinct 评分人工号),0)) [平均分]
from tb
where [关系]='上级'
group by [工号],[姓名]
--结果:
工号 姓名 平均分
A1 张三 205
select 工号, 姓名, 平均分=sum(分数)/count(distinct 评分人工号)
from T
where 关系='上级'
group by 工号, 姓名
工号 姓名 平均分
---------- ---------- -----------
A1 张三 205
(1 行受影响)
create table tb(工号 nvarchar(10),姓名 nvarchar(10),评分人工号 nvarchar(10),评分人姓名 nvarchar(10),关系 nvarchar(10),评分项 int,分数 int)
insert into tb select '','张三','B1','马六','上级',1,80
insert into tb select '','张三','B1','马六','上级',2,60
insert into tb select '','张三','B1','马六','上级',3,100
insert into tb select '','张三','B2','李四','上级',1,70
insert into tb select '','张三','B2','李四','上级',2,30
insert into tb select '','张三','B2','李四','上级',3,70
insert into tb select '','张三','B3','王五','同事',1,60
insert into tb select '','张三','B3','王五','同事',2,60
insert into tb select '','张三','B3','王五','同事',3,60
go
select 姓名,关系,sum(分数*1.0)/(select count(*) from (select distinct 评分人姓名 from tb where 姓名=a.姓名 and 关系='上级')t) as 平均分 from tb a where 关系='上级' group by 姓名,关系
go
drop table tb
/*
姓名 关系 平均分
---------- ---------- ---------------------------------------
张三 上级 205.000000
(1 行受影响)
*/
create table tb(工号 nvarchar(10),姓名 nvarchar(10),评分人工号 nvarchar(10),评分人姓名 nvarchar(10),关系 nvarchar(10),评分项 int,分数 int)
insert into tb select '','张三','B1','马六','上级',1,80
insert into tb select '','张三','B1','马六','上级',2,60
insert into tb select '','张三','B1','马六','上级',3,100
insert into tb select '','张三','B2','李四','上级',1,70
insert into tb select '','张三','B2','李四','上级',2,30
insert into tb select '','张三','B2','李四','上级',3,70
insert into tb select '','张三','B3','王五','同事',1,60
insert into tb select '','张三','B3','王五','同事',2,60
insert into tb select '','张三','B3','王五','同事',3,60
go
select 姓名,关系,sum(分数*1.0)/(select count(*) from (select distinct 评分人姓名 from tb where 姓名=a.姓名)t) as 平均分 from tb a where 关系='上级' group by 姓名,关系
go
drop table tb
/*
姓名 关系 平均分
---------- ---------- ---------------------------------------
张三 上级 136.666666
(1 行受影响)
*/