Mysql 多行的SQL加权平均数-
如何找到多行的实际加权平均值: 所谓实数加权,我的意思是像这个计算器:(而不是用值乘以权重) 每个答案的权重在Mysql 多行的SQL加权平均数-,mysql,sql,Mysql,Sql,如何找到多行的实际加权平均值: 所谓实数加权,我的意思是像这个计算器:(而不是用值乘以权重) 每个答案的权重在答案中设置,每个问题的值在子表答案项目中设置。我们需要每个问题的加权平均值(a、b、c、d)。我们事先知道要寻找什么问题 查询将包括2到500k个答案(因此最好是快速解决方案:) 您可以将该值乘以权重,然后除以权重之和。按问题列出的加权平均数: select question, sum(ai.value * a.weight) / sum(a.weight) from answer_i
答案
中设置,每个问题的值在子表答案项目
中设置。我们需要每个问题的加权平均值
(a、b、c、d)。我们事先知道要寻找什么问题
查询将包括2到500k个答案(因此最好是快速解决方案:)
您可以将该值乘以权重,然后除以权重之和。按问题列出的加权平均数:
select question, sum(ai.value * a.weight) / sum(a.weight)
from answer_items ai join
answers a
on ai.answer_id = a.id
group by question;
是一把小提琴。类似于:
SELECT
SUM(value * weight) / SUM (weight)
FROM
answers
JOIN
answer_items
ON
answer_items.answer_id = answers.id
(编辑:显然包括问题和问题分组,如前一个关于总和聚合的答案,如前一个答案。D'oh)代码示例是MySQL,因此我删除了Postgres标记(尽管它对答案没有什么影响)。很好的一个-很有魅力。跟进问题:1:按问题和用户id分组,计算每个用户的答案(不是项目)和总数。可能吗?2:可以将每个用户的响应按数组分组
[[user\u id,[[question\u id,average]]
@LineinLinus…后续问题应该是新问题,而不是评论。
SELECT
SUM(value * weight) / SUM (weight)
FROM
answers
JOIN
answer_items
ON
answer_items.answer_id = answers.id