2010-06-10 26 views
3

Je travaille sur la façon de calculer le coefficient de corrélation entre les deux champs si les deux sont dans la même table:Calcul du coefficient de corrélation avec PostgreSQL?

SELECT corr(column1, column2) FROM table WHERE <my filters>; 

... mais je ne peux pas travailler comment faire quand les colonnes sont de différentes tables (j'ai besoin d'appliquer les mêmes filtres aux deux tables).

Des indices, s'il vous plaît?

Répondre

4

Si les tables sont liées les unes aux autres de sorte que vous pouvez les joindre, c'est assez simple. Il suffit de se joindre à eux et faire la corrélation:

SELECT corr(t1.col1, t2.col2) 
FROM table1 t1 
    JOIN table2 t2 
     ON t1.join_field = t2.join_field 
WHERE 
    <filters for t1> 
    AND 
    <filters for t2> 

Si elles ne sont pas, alors comment êtes-vous censé savoir quelle combinaison de champs de chaque table que vous voulez exécuter sur corr?

0

essayer cette

SELECT corr(t1.column1, t2.column2) 
FROM table1 t1 
join table2 t2 on t1.SomeColumn = t2.SomeColumn 
WHERE t1.<my filters> 
AND t2.<my filters>;