这是我的问题, 所以基本上我想为表格的数据列的平均值添加一个新列:
输入
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 .
答案 0 :(得分:2)
您可以使用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 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
答案 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
尝试这个