2015-01-15 2 views
1

Предположим, что у меня есть числовой столбец, и я хочу применить к значениям нетривиальную формулу (не sum или avg). Как написать запрос для получения желаемых значений.Применение формулы в столбце 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 
Смежные вопросы