我是sql的新手,想使用sql中的聚合函数执行简单的任务。
select (current_data + avg(current_data))
as "average + current data"
from datasets
但是,聚合函数的算术加法似乎在sql中不起作用。 如何将current_data添加到avg(current_data)的值?
答案 0 :(得分:1)
为此-
SELECT current_data +
(
SELECT avg(current_data) FROM datasets
) AS 'average + current data'
FROM datasets
答案 1 :(得分:0)
为避免计算每一行的平均值,我建议先计算平均值然后再使用它。
DECLARE @avg INT
SET @avg = (SELECT AVG(current_data) FROM dataset)
SELECT current_data + @avg
FROM dataset
答案 2 :(得分:0)
我正在尝试为我拥有的所有行执行(current_data + avg(current_data))。例如,如果我有一个数据集,每行包含1到10,则avg(current_data)变为5.5,并想将每行数据(1,2,..... 10)添加到5.5,因此在输出,每行显示(6.5,7.5,... 15.5)
为此,您需要avg()
的版本是 window函数,用OVER
关键字表示(在许多(但不是全部)数据库中可用):
SELECT current_data + avg(current_data) OVER () AS "average + current_data"
FROM datasets
ORDER BY current_data;
给予
average + current_data
----------------------
6.5
7.5
8.5
9.5
10.5
11.5
12.5
13.5
14.5
15.5