2015-01-15 45 views
1

假設我有一個數字列,並且我想對這些值應用一個不重要的(不是平分或平均值)公式。我將如何編寫查詢來獲取所需的值。在SQL列上應用公式

作爲一個例子,假設表T有一列稱爲數字,我想找到數字倒數的乘積。

T.number 
-------- 
1 
2 
3 
4 
5 

我想要得到的值:

1/1 + 1/2 1/3 + 1/4 + 1/5 +

如何實現這個?我很熟悉分組和聚合,但在這裏我不需要分組,但可以直接應用公式。

回答

4

你的公式是倒數的總和。你會做:

select sum(1.0/t.number) 
from t; 

不幸的是,大多數數據庫不支持product功能。您可以通過取得日誌並添加它們然後倒轉日誌來完成此操作。具體功能的數據庫不同,但這樣的事情:

select exp(sum(log(1.0/t.number))) 
from t; 
+0

如果我想乘,或採取平方根相乘後? –

+1

取決於數據庫;大多數支持'sqrt()';如果不是那樣,則使用'pow()'或'power()'。 –

+0

我想關鍵是找到合適的替代品,就像你已經證明的產品。 –

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