SQL语句:
/*每个的加权总数除以参与打分角色的权重,即为加权平均分*/
select 姓名,SUM(角色平均分*权重) as 每人加权总数 ,SUM(权重) as 权重数,round(sum(角色平均分*权重)/sum(权重),2) as 加权平均分
from (
/*子查询2:获取没人不同角色打分人的分值平均值和权重*/
select 姓名,打分人角色,round(avg(分数),2) as 角色平均分,round(avg(权重),2) as 权重,count(1) as 角色人数 from (
/*子查询1:根据角色获取到权重*/
select 姓名,分数,打分人角色,
case 打分人角色
when '高层领导' then 5
when '中层领导' then 3
when '普通人员' then 2
end as 权重
from 加权打分表) t1
group by 姓名,打分人角色
) t2
group by 姓名