gpt4 book ai didi

mysql - 如何使用其他三个表中列的平均值更新一个表中的分数列?

转载 作者:行者123 更新时间:2023-11-29 12:25:42 25 4
gpt4 key购买 nike

我有 4 个表格,其中有一个分数列(分数最多 10 分)

此结构与我真实数据库中的结构类似:

 - master_entity(id, name, **score**, other-columns...)
- scores_table1(id, score_giver1_id, master_entity_id, **score**)
- scores_table2(id, score_giver2_id, master_entity_id, **score**)
- scores_table3(id, score_giver3_id, master_entity_id, **score**)

我想每天使用 cron 作业执行一个简单的 SQL 脚本(针对 MySQL 数据库)。此脚本必须使用其他三个表中分数列的平均值来更新 ma​​ster_entity.score 列。

但是 scores_table1分数列的平均值仅代表分数列平均值的1/6master_entity中。

此外,scores_table2 中分数列的平均值必须仅代表平均分数列2/6> master_entity 中的值,最后 scores_table3 中 score 列 的平均值必须仅代表平均值的 3/6 master_entity中的分数列

使用其他 3 个表中分数的比例平均值来更新 ma​​ster_entity.score 列的建议 SQL 是什么?

最佳答案

我没有尝试过,但根据你的问题,你的sql查询应该如下所示:

update master_entity m
join(
select master_entity_id,avg(score) as score
from score_table1
group by master_entity_id
) as s1 on s1.master_entity_id = m.id
join(
select master_entity_id,avg(score) as score
from score_table2
group by master_entity_id
) as s2 on s2.master_entity_id = m.id
join(
select master_entity_id,avg(score) as score
from score_table3
group by master_entity_id
) as s3 on s3.master_entity_id = m.id
set m.score = (1/6)*s1.score + (2/6)*s2.score + (3/6)*s3.score

其中 master_entity.score = (1/6)*avg(tbl1.score) + (2/6)*avg(tbl2.score) + (3/6)*avg(tbl3.score)

关于mysql - 如何使用其他三个表中列的平均值更新一个表中的分数列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com