2012-01-10 107 views
1

我有一個數據庫,包含101個模擬,可以說有5個不同的資產類別返回。SQL。資產類別的計算相關性

我需要編寫一個查詢來計算5個類別之間的各自相關性。表格將如下所示:

AssetClass_ID |模擬| AssetClass_Value

任何想法?我正在努力爭取接近。

(根據難易我可能最終不得不告訴最終用戶只要下載所有的模擬,並使用內置Excel函數做統計,但我不可能成爲流行這樣做)

回答

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 

答案匹配Excel內置功能到目前爲止,這麼好。

+0

@musefan不要試圖聽起來像一個混蛋,但你到底在哪裏學會縮進? – 2012-01-12 15:10:31

+0

@Norla:我只縮進了一次,以便前面的幾行和最後幾行都正確地包含在代碼塊中。原始縮進由海報完成 - 我不想改變。如果你想/可以隨意改進它(你在「編輯」評論中看到的內容與實際發佈的格式不一樣 - 你看不到舊的縮進) – musefan 2012-01-12 15:20:52

+0

對不起,沒有發佈代碼,沒有檢查格式實際上並沒有打破地獄。 – 2012-01-12 15:28:48