Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何创建整个表的平均数列_Mysql_Sql - Fatal编程技术网

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

Mysql 如何创建整个表的平均数列,mysql,sql,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 . 您可以使用SUM和COU

这是我的问题, 因此,基本上我想添加一个新列,其中包含表中数据列的平均值:

输入

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 .

您可以使用SUM和COUNT在select语句上使用子select:

。。。或使用平均值:

您还可以使用,以便以后只需查询视图:

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

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

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

在MySQL 8+中尝试此选项,您将使用以下窗口函数:

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

在选择中包含子查询。
SELECT m.number, m.data , t.avg_data 
FROM my_table m
CROSS JOIN (
  SELECT avg(data) avg_data 
  FROM my_table
) t 
SELECT *,(SELECT AVG(dat) FROM tablename) FROM tablename
select t.*, avg(data) over () as avg_data
from t;