Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 多行的SQL加权平均数-_Mysql_Sql - Fatal编程技术网

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