数学计算

v1ctory1216 2010-11-19 08:35:44
T表
工号 姓名 评分人工号 评分人姓名 关系 评分项 分数
A1 张三 B1 马六 上级 1 80
A1 张三 B1 马六 上级 2 60
A1 张三 B1 马六 上级 3 100
A1 张三 B2 李四 上级 1 70
A1 张三 B2 李四 上级 2 30
A1 张三 B2 李四 上级 3 70
A1 张三 B3 王五 同事 1 60
A1 张三 B3 王五 同事 2 60
A1 张三 B3 王五 同事 3 60

求出上级评分的所有分数的和除以上级人数,如:张三的上级有2个人,六项评分项,就是把6项分数全加起来,除以2个人(马六和李四)。因为还有N多数据,所以不要写死,谢谢!
...全文
120 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fa_ge 2010-11-22
  • 打赏
  • 举报
回复
接点分,同意三楼。
zhangbiaoandbill 2010-11-22
  • 打赏
  • 举报
回复
只求多样性 先不说效率问题

select [工号],[姓名],[关系],(sum([分数])*1.0)/count(distinct [评分人姓名]) as Result from tb as t group by [工号],[姓名],[关系] having [关系]='上级'

dawugui 2010-11-20
  • 打赏
  • 举报
回复
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
abuying 2010-11-20
  • 打赏
  • 举报
回复
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.姓名
cxmcxm 2010-11-20
  • 打赏
  • 举报
回复
select 工号,姓名,sum(分数)/count(distinct 评分人工号) as 平均分
from 表 where 关系='上级'
group by 工号,姓名
chen8410 2010-11-19
  • 打赏
  • 举报
回复
select [工号],[姓名],(SUM([分数])/NULLIF(COUNT(distinct 评分人工号),0)) [平均分]
from tb
where [关系]='上级'
group by [工号],[姓名]
--结果:
工号 姓名 平均分
A1 张三 205
coleling 2010-11-19
  • 打赏
  • 举报
回复
select 工号, 姓名, 平均分=sum(分数)/count(distinct 评分人工号) 
from T
where 关系='上级'
group by 工号, 姓名

工号 姓名 平均分
---------- ---------- -----------
A1 张三 205

(1 行受影响)
-晴天 2010-11-19
  • 打赏
  • 举报
回复
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 行受影响)
*/
-晴天 2010-11-19
  • 打赏
  • 举报
回复
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 行受影响)
*/

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧