Как вычесть среднее значение столбца из этого же столбца? - PullRequest
0 голосов
/ 20 января 2019

У меня есть таблица 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 голосов
/ 20 января 2019

Вы можете сделать короче что-то вроде этого:

SELECT LENGTH-(SELECT AVG(LENGTH) FROM TEST) FROM TEST
0 голосов
/ 20 января 2019

В 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;
0 голосов
/ 20 января 2019

Использование подзапроса может помочь:

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

Возможно, вам потребуется исправить синтаксис ... Я не проверял его ... но идея состоит в том, чтобы выполнить такой запрос ...Если вам нужна дополнительная информация, google: mysql subqueries

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...