34,593
社区成员
发帖
与我相关
我的任务
分享
update @defen set defen=b.df
from @defen a left join
(
select id,sum(case when 职务 = '正职' then 0.6 else 0.4 end * f) as df
from (select id,职务,avg(分*1.0) as f from @fen group by id,职务) t
group by id
) b on a.ID=b.ID
create table tb(id int, 分 int, 评分人 varchar(10) , 职务 varchar(10))
insert into tb values(1 , 80 , '王' , '正职')
insert into tb values(1 , 100 , '章' , '副职')
insert into tb values(1 , 75 , '刘' , '副职')
insert into tb values(1 , 60 , '周' , '正职')
insert into tb values(1 , 90 , '程' , '副职')
insert into tb values(2 , 85 , '王' , '正职')
go
select id , defen = sum(case 职务 when '正职' then avg_score * 0.6 else avg_score * 0.4 end) from
(
select id , 职务 , avg(分*1.0) avg_score from tb group by id , 职务
) t
group by id
drop table tb
/*
id defen
----------- ----------------------------------------
1 77.333333
2 51.000000
(所影响的行数为 2 行)
*/
UPDATE defen
SET defen =b.defen
FROM defen a INNER JOIN
(
SELECT ID,
defen=CASE WHEN 职务=N'正职' THEN totalfen*0.6 ELSE totalfen*0.4 END
FROM (
SELECT ID,职务,avg(fen) as totalfen
FROM fen
GROUP BY ID ,职务
)tmp
GROUP BY ID
) b
WHERE a.ID=b.ID
update f
set defen = a.ff
from defen f left join
(
select id,sum(case when 职务 = '正职' then 0.6 else 0.4 end * f) as ff
from (select id,职务,avg( 分) as f
from fen
group by id,职务)a
group by id
) a on f.id = a.id
select id,sum(case when 职务 = '正职' then 0.6 else 0.4 end * f)
from (select id,职务,avg( 分) as f from fen group by id,职务)a
group by id
update DEFEN set DEFEN=b.DE from DEFEN a left join
( select id,round(isnull(avg(case when duty='正职' then fen*1.0 end),0)*0.6+
isnull(avg(case when duty='副职' then fen*1.0 end),0)*0.4,2)DE
from FEN group by id
)b on a.id=b.id