как создать столбец среднего номера всей таблицы - PullRequest
0 голосов
/ 15 апреля 2019

Вот моя проблема, поэтому в основном я хочу добавить новый столбец со средним значением столбца данных для таблицы:

input

number  data    
1       4   
2       5   
3       6   
4       7   

output

number  data    avg_data .  
1       4       5.5 .  
2       5       5.5 . 

3       6       5.5 . 

4       7       5.5 .

Ответы [ 4 ]

2 голосов
/ 15 апреля 2019

Вы можете использовать дополнительный выбор для оператора SELECT, используя SUM и COUNT:

SELECT *,
  (SELECT SUM(data) / COUNT(*) FROM table_name) AS avg_data
FROM table_name

... или используя AVG:

SELECT *,
  (SELECT AVG(data) FROM table_name) AS avg_data
FROM table_name

Вы также можете использовать для создания представления , поэтому вам нужно только запросить представление в будущем:

-- create the view
CREATE VIEW view_name AS
SELECT *,
  (SELECT SUM(data) / COUNT(*) FROM table_name) AS avg_data
FROM table_name

-- SELECT from view
SELECT * FROM view_name

демо на dbfiddle.uk

0 голосов
/ 15 апреля 2019

В MySQL 8+ вы бы использовали оконные функции:

select t.*, avg(data) over () as avg_data
from t;
0 голосов
/ 15 апреля 2019
SELECT *,(SELECT AVG(dat) FROM tablename) FROM tablename

попробуйте это

0 голосов
/ 15 апреля 2019

Вы можете использовать перекрестное соединение между таблицей и подзапросом для avg

SELECT m.number, m.data , t.avg_data 
FROM my_table m
CROSS JOIN (
  SELECT avg(data) avg_data 
  FROM my_table
) t 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...