如何从同一列中减去一列的平均值?

时间:2019-01-20 03:06:30

标签: mysql sql

我的MySQL表只有一列[20、60、40、20],该列的平均值为35。我想从同一列中减去平均值(在本例中为35),以便结果列应具有[-15、25、5,-15]。

CREATE TABLE TEST (LENGTH FLOAT);
INSERT INTO TEST (LENGTH) VALUES (20), (60), (40), (20);

MySQL的结果应为[-15、25、5,-15]

谢谢!

3 个答案:

答案 0 :(得分:2)

使用子查询可能会有所帮助:

SELECT a.length - b.length_avg
FROM
  test a, (
  SELECT AVG(length) AS "LENGTH_AVG"
  FROM test
  ) b
;

您可能需要修复语法...我没有对其进行测试...但是我们的想法是执行类似的查询...如果您需要更多信息,请访问google:mysql子查询

答案 1 :(得分:1)

您可以使用以下方法做得更短:

SELECT LENGTH-(SELECT AVG(LENGTH) FROM TEST) FROM TEST

答案 2 :(得分:1)

在MySQL 8+中,您可以这样做:

select (t.length - avg(t.length) over ())
from test t;

在早期版本中,我将其表达为:

select t.length - tt.avg_length
from test t cross join
     (select avg(length) as avg_length from test) tt;