我有一张这样的桌子:
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))
如果我只有几项运动,我知道我会这样做:
select count(*) from (select * from table where sport = sport1) t1 join (select count(*) from table where sport = sport2) t2 on t1.personId = t2.personId;
但我想为我所有的运动生成一张表格。
请注意,我使用的是 Hive 0.9,它不支持交叉连接。
谢谢!