如何获取列中的每个值,该值除以该列的平均值并让它在新列中返回一个值?
这是我的表:
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。
由于
答案 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