如何创建整个表格的平均列数

时间:2019-04-15 06:43:24

标签: mysql sql

这是我的问题, 所以基本上我想为表格的数据列的平均值添加一个新列:

输入

number  data    
1       4   
2       5   
3       6   
4       7   

输出

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

3       6       5.5 . 

4       7       5.5 .

4 个答案:

答案 0 :(得分:2)

您可以使用SELECTSUMCOUNT语句上使用子选择:

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 a view,因此以后只需要查询视图:

-- 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

demo on dbfiddle.uk

答案 1 :(得分:0)

您可以在表和子查询之间使用交叉联接

SELECT m.number, m.data , t.avg_data 
FROM my_table m
CROSS JOIN (
  SELECT avg(data) avg_data 
  FROM my_table
) t 

答案 2 :(得分:0)

在MySQL 8+中,您将使用窗口函数:

select t.*, avg(data) over () as avg_data
from t;

答案 3 :(得分:-1)

SELECT *,(SELECT AVG(dat) FROM tablename) FROM tablename

尝试这个