sql不同工作按不同人数分配比例得分,汇总各自得分

有不同工作有不同人员来承办,得分按承办人人数多少来分配,计算出各自的得分。比如挖土工作,由张三和李四完成,张三为主承办人,分值占60%,李四为协办,分值占40%。浇水工作,由张三和王五完成,张三为主承办人,分值占60%,李四为协办,分值占40%。除草工作,由李四,王五,赵六完成,分值占50%,王五赵六为协办,分值占25%。求张三李四王五赵六各自的总得分。
承办人一列中第一个名字为主承办人,其余名字为协办,主协办得分分配原则:若是两个人承办,按主承办人60%,协办人40%,若是三个人承办,按主承办人50%,协办人各25%,若是四个人承办,按主承办人40%,协办人20%,若是五个人承办,按主承办人30%,协办人17.5%。

先创建一个表

CREATE TABLE work_assign (
  work VARCHAR(50),
  assignee VARCHAR(50),
  role VARCHAR(10),
  allocation DECIMAL(5,2),
  score DECIMAL(5,2)
);

插入数据

INSERT INTO work_assign (work, assignee, role, allocation)
VALUES
  ('挖土工作', '张三', '主承办人', 0.6),
  ('挖土工作', '李四', '协办人', 0.4),
  ('浇水工作', '张三', '主承办人', 0.6),
  ('浇水工作', '王五', '协办人', 0.4),
  ('除草工作', '李四', '协办人', 0.25),
  ('除草工作', '王五', '协办人', 0.25),
  ('除草工作', '赵六', '协办人', 0.25),
  ('除草工作', '张三', '主承办人', 0.5);

计算每个人得分

SELECT assignee, SUM(allocation * score) AS total_score
FROM work_assign
GROUP BY assignee;
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^