Mysql将列中的值除以整列的平均值

时间:2014-05-19 19:16:09

标签: mysql sql sql-update subquery

如何获取列中的每个值,该值除以该列的平均值并让它在新列中返回一个值?

这是我的表:

A  B   C
_  _   _
1  4   #((1/2)+(1/8))/2 # this is data i hope to get in col C
2  9   #((2/2)+(9/8))/2
3  11  #((3/2)+(11/8))/2

我想在c栏中的公式是:( A / AVG(A)+ B / AVG(B))/ 2

这是我的MYSQL查询:

update table f
set f.C=(((f.A)/(SELECT AVG(f.A)))+((f.B)/(SELECT AVG(f.B))))/2;

我最终只得到col C的所有行中的1。

由于

3 个答案:

答案 0 :(得分:0)

您的期望是:

( A/SUM(A)+B/SUM(B) )/2

而不是

( A/AVG(A)+B/AVG(B) )/2

因此,请执行:

update table f
set f.C=(((f.A)/(SELECT SUM(f.A)))+((f.B)/(SELECT SUM(f.B))))/2;

答案 1 :(得分:0)

我使用变量来设置平均值,然后运行当前查询

SET @avgA = (SELECT AVG(f.A) FROM f);
SET @avgB = (SELECT AVG(f.B) FROM f);

update table f
  set f.C=(((f.A)/(@avgA))+((f.B)/(@avgB)))/2;

答案 2 :(得分:0)

您可以使用带有update的{​​{1}}在一个声明中执行此操作:

join