2012-01-10 5 views
1

저는 5 개의 다른 자산 클래스가 반환하는 101 개의 시뮬레이션을 가진 데이터베이스를 가지고 있습니다.SQL. 자산 클래스의 계산 상관 관계

각 5 개의 클래스 사이의 상관 관계를 계산하는 쿼리를 작성해야합니다. 표는 다음과 같습니다.

AssetClass_ID | 시뮬레이션 | AssetClass_Value

아이디어가 있으십니까? 나는 가까이에 고투하고있다. (난 그냥 모든 시뮬레이션을 다운로드하고 붙박이 엑셀 함수를 사용하여 통계를 할 수있는 최종 사용자에게 필요 끝낼 수 있습니다 어려움에 따라,하지만 난 그렇게 인기가 될 가능성이 오전)

답변

1

좋아, 일부 구글과 몇 가지 작업과 내가 함께했다 :

SELECT 
     AssetID_1, AssetID_2, 
     ((psum - (sum1 * sum2/n))/sqrt((sum1sq - sum1*sum1/n) * (sum2sq - sum2*sum2/n))) AS [Correlation Coefficient], 
     n 
FROM 
     (SELECT 
       n1.AssetClass_ID AS AssetID_1, 
       n2.AssetClass_ID AS AssetID_2, 
       SUM(n1.RunResults_Value) AS sum1, 
       SUM(n2.RunResults_Value) AS sum2, 
       SUM(n1.RunResults_Value * n1.RunResults_Value) AS sum1sq, 
       SUM(n2.RunResults_Value * n2.RunResults_Value) AS sum2sq, 
       SUM(n1.RunResults_Value * n2.RunResults_Value) AS psum, 
       COUNT(*) AS n 
     FROM 
       dbo.tbl_RunResults AS n1 
       LEFT JOIN dbo.tbl_RunResults AS n2 ON n1.Simulation_ID = n2.Simulation_ID 
     WHERE 

       n1.AssetClass_ID < n2.AssetClass_ID AND 
       n1.series_ID = 2332 AND 
       n2.series_ID = 2332 

    GROUP BY 
     n1.AssetClass_ID, n2.AssetClass_ID) AS step1 
ORDER BY 
     AssetID_1 

답변이 너무 좋아, 지금까지 엑셀 붙박이 기능을 일치합니다.

+0

@musefan 저크처럼 들리려고하지 않았지만, 대체 어디에서 들여 쓰기를 배웠습니까? –

+0

@Norla : 처음 몇 줄과 마지막 줄이 코드 블록에 올바르게 포함되도록 전체 줄을 한 번 들여 쓰기 만했습니다. 원래의 들여 쓰기는 내가 바꾸고 싶지 않은 포스터에 의해 수행되었습니다. 원하는 경우/할 수 있으면 마음껏 개선하십시오. ("편집"리뷰는 실제로 게시 된 형식과 동일하지 않습니다. 이전 들여 쓰기를 볼 수 없습니다.) – musefan

+0

죄송합니다. 이전에 코드를 게시하지 않았으며 형식을 확인하지 않았습니다. 실제로, 지옥에 부서지지 않았습니다. –