我想知道是否可以按升序对float(53)
列的值求和。
例如,如果我的列包含值5、7和2。我希望它被计算为2+5+7。
在我的情况下,这个顺序很重要,因为我要对数百万个浮点进行求和,每次执行都会得到不同的结果。
I认为您可以使用窗口函数和过滤来获得总和:
select t.*
from (select t.*,
sum(col) over (order by col asc) as sum_col,
row_number() over (order by col desc) as seqnum
from t
) t
where seqnum = 1;
或者不带子查询:
select top (1) sum(col) over (order by col asc)
from t
order by col desc;
注意:这假设col
具有唯一的值。如果可能重复,只需将主键添加为order by
s中的第二列即可。
然而,如果可以使用numeric
/decimal
存储数据,这可能是一个更可持续的解决方案。