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;