2012-01-10 7 views
1

私は101のシミュレーションのデータベースを持っていますが、5つの異なる資産クラスが返されます。SQL。資産クラスの計算相関

私は5つのクラスのそれぞれの間のそれぞれの相関を計算するクエリを書く必要があります。テーブルは次のようになります。

AssetClass_ID |シミュレーション| AssetClass_Value

アイデア?私も近くに苦労しています。

(難易度に応じて、私はすべてのシミュレーションをダウンロードして、作り付けのExcel関数を使用して統計を行いますが、私はそうするための人気のなさそうだし、エンドユーザーに伝えるために終わる場合があります)

答えて

1

[OK]を、いくつかのグーグルといくつかの仕事で私は思い付いた:

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

@ノーラ:最初の数行と最後の数行がコードブロックに正しく含まれるように、ロット全体を一度だけインデントしました。元の字下げは、私が変更したくないポスターで行われました。実際に投稿された形式と同じではない - あなたは古いインデントを見ることができません) – musefan

+0

申し訳ありませんが、前にコードを投稿していないし、フォーマットをチェックしませんでした実際には、地獄に壊れていませんでした。 –