我的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]
谢谢!
答案 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;