假设我有一个数字列,我想对这些值应用非平凡(不是sum或avg)公式。如何编写查询以获得所需的值。
例如,假设表T有一个名为number的列,我想找到该数字的倒数的乘积。
T.number
--------
1
2
3
4
5
我想获得价值:
1/1 + 1/2 + 1/3 + 1/4 + 1/5
我如何实现这一目标?我熟悉分组和汇总,但在这里我不需要分组,而是直接应用公式。
答案 0 :(得分:4)
你的公式是倒数的总和。你会这样做:
select sum(1.0 / t.number)
from t;
不幸的是,大多数数据库不支持product
功能。您可以通过获取日志并添加它们然后反转日志来完成此操作。具体功能因数据库而异,但类似这样:
select exp(sum(log(1.0 / t.number)))
from t;
答案 1 :(得分:0)
这是更精心设计的......
DECLARE @TempTbl TABLE
(
Num DECIMAL(10,2)
)
INSERT INTO @TempTbl(Num) VALUES(1)
INSERT INTO @TempTbl(Num) VALUES(2)
INSERT INTO @TempTbl(Num) VALUES(3)
INSERT INTO @TempTbl(Num) VALUES(4)
INSERT INTO @TempTbl(Num) VALUES(5)
SELECT SUM(1.0/Num) FROM @TempTbl