假設我有一個數字列,並且我想對這些值應用一個不重要的(不是平分或平均值)公式。我將如何編寫查詢來獲取所需的值。在SQL列上應用公式
作爲一個例子,假設表T有一列稱爲數字,我想找到數字倒數的乘積。
T.number
--------
1
2
3
4
5
我想要得到的值:
1/1 + 1/2 1/3 + 1/4 + 1/5 +
如何實現這個?我很熟悉分組和聚合,但在這裏我不需要分組,但可以直接應用公式。
假設我有一個數字列,並且我想對這些值應用一個不重要的(不是平分或平均值)公式。我將如何編寫查詢來獲取所需的值。在SQL列上應用公式
作爲一個例子,假設表T有一列稱爲數字,我想找到數字倒數的乘積。
T.number
--------
1
2
3
4
5
我想要得到的值:
1/1 + 1/2 1/3 + 1/4 + 1/5 +
如何實現這個?我很熟悉分組和聚合,但在這裏我不需要分組,但可以直接應用公式。
你的公式是倒數的總和。你會做:
select sum(1.0/t.number)
from t;
不幸的是,大多數數據庫不支持product
功能。您可以通過取得日誌並添加它們然後倒轉日誌來完成此操作。具體功能的數據庫不同,但這樣的事情:
select exp(sum(log(1.0/t.number)))
from t;
這是更加精心代表...
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
如果我想乘,或採取平方根相乘後? –
取決於數據庫;大多數支持'sqrt()';如果不是那樣,則使用'pow()'或'power()'。 –
我想關鍵是找到合適的替代品,就像你已經證明的產品。 –