2013-03-18 4 views

답변

3

You can fake a product() aggregate function by doing the following :

SELECT Col1, EXP(SUM(LOG(V))) 
FROM Table 
GROUP BY Col1 

왜이 일을 하는가?

는 다음의 예를 보자

DECLARE @x INT, @y INT 

SET @x = 7 
SET @y = 8 

-- Both return 4.02535 
PRINT LOG(@x * @y) 
PRINT LOG(@x) + LOG(@y) 

-- Both return 56. 
PRINT EXP(LOG(@x) + LOG(@y)) 
PRINT @x * @y 

그래서 대수, LOG(x * y) = LOG(x) + LOG(y)에 대한 ... 그리고 우리는 SUM() 기능을 가지고 있지만 우리가 LOG() 다음 SUM() 이러한 결과로 각각의 값을 전달 경우 PRODUCT() 기능이 부족하기 때문에, 모든 값을 곱한 다음 결과를 LOG()에 전달하는 것과 같습니다.

마지막으로 을 반대로하기 위해 SUM()에 대해 EXP()이 수행됩니다.

올바르게 작동하려면 몇 가지 규정이 있습니다. 예를 들어 모든 값이 0보다 커야합니다.

관련 문제