私はこのようなテーブルを持っています:
sport personId
1 1
1 2
1 3
2 1
2 4
2 6
3 1
3 3
3 6
スポーツの交差点の数を含む表を取得したいと思います。これは、擬似コードに相当します。
for sport1 in sports:
for sport2 in sports:
X[sport1,sport2] = count(intersect(sport1,sport2))
スポーツが2、3しかない場合は、そうすることを知っています。
select count(*) from (select * from table where sport = sport1) t1 join (select count(*) from table where sport = sport2) t2 on t1.personId = t2.personId;
しかし、私はすべてのスポーツのテーブルを生成したいと思います。
クロスジョインをサポートしていないHive0.9を使用していることに注意してください。
ありがとう!