如何获得此查询的平均值?查询工作正常但我无法获得所有列的平均值
INSERT INTO db_name(
AVERAGE_WEIGHT,
RUNNING_TOTAL,
ROLLING_AVERAGE)
VALUES
(onvert(real, '515,
(convert(real, '515 + (SELECT SUM(average_weight) FROM db_name)),
(SELECT AVG(average_weight) FROM db_name))
AVERAGE_WEIGHT RUNNING_TOTAL ROLLING_AVERAGE
515 NULL NULL
510 1025 515
500 1525 512.2
我的最后一列应为NULL,512.2,508.33如何获得正确的值?有可能吗?
答案 0 :(得分:2)
如果您想要滚动平均值并且正在使用SQL Server 2012或更高版本,请执行以下操作:
select weight,
sum(weight) over (order by id) as running total,
avg(weight) over (order by id) as rolling average
from db_name;
这假设有一个id
列指定行的顺序。 SQL表本质上是无序的,因此需要一列。
请注意,您对滚动平均值的定义不是传统定义。值为515,512.5和508.3。以上归还了这些。
如果要将这些值插入表中,请在前面加上insert
语句。您的查询是从同一个表插入和读取。这看起来很奇怪。你无法通过这种方式获得累积值。
答案 1 :(得分:0)
尝试:
INSERT INTO db_name(
AVERAGE_WEIGHT,
RUNNING_TOTAL,
ROLLING_AVERAGE)
VALUES
(convert(real, '515'),
(convert(real, '515') + (SELECT SUM(COALESCE(average_weight,0)) FROM db_name)),
(SELECT AVG(COALESCE(average_weight,0)) FROM db_name))