1

SQLを使用してピアソン相関係数を計算する方法を理解しようとしています。ここに私が使用している式があります: ここに画像の説明を入力 そしてここに私が使用しているテーブルがあります: ここに画像の説明を入力

これは私がこれまでにクエリに対して持っているものですが、次のメッセージが表示されます:グループ関数の無効な使用

select first_id, second_id, movie_id, first_score, second_score,  count(*) as n, 
sum((first_score-avg(first_score))*(second_score-avg(second_score)))/
(
sqrt(sum(first_score-avg(first_score)))*
sqrt(sum(second_score-avg(second_score))))
as pearson
from connections
group by second_id

助けてくれてありがとう

4

2 に答える 2

2

数式で計算を行うクエリを次に示します。

select sum((first_score - avg_first_score)*(second_score - avg_second_score)) /
       (sqrt(sum(pow((first_score - avg_first_score), 2)))*
        sqrt(sum(pow((second_score - avg_second_score), 2)))
       ) as r      
from connections c cross join
     (select avg(first_score) as avg_first_score, avg(second_score) as avg_second_score
      from connections
     ) const;

あなたの試みには多くの問題があります。これにより、2 つのスコアの平均値が事前に計算されます。次に、書かれているとおりに式を適用します。

于 2013-12-22T04:01:39.637 に答える
0

group by純粋に構文的な観点から見ると、句に問題があります。適切に機能するには、集計されていないすべての列をリストする必要があります。そのはず:

group by first_id, second_id, movie_id, first_score, second_score
于 2013-12-22T04:00:57.440 に答える