1.求互相为好友一般原文件形式如下 , 第一步需要炸开 , 则需要使用 lateral view
A: BCDEF
B: CDEF
C: ASD
反正最后我处理的文件是 ,我只是提供这种思路.
2. 第二步 , 根据字典排序
select if(substr(str,1,1)>substr(str,2,1),reverse(str),str) from k2;
>我的思路是 , 把字段里面 提取出两个人 名字 ,按字典排序 , 那么小明和小华是好友 , 小华和小明是好友 , 最后都会变成 , 小明和小华 .
然后再group by ,count(*)=2的时候就是共同好友
比如 AB , A<B 则不动 , BA ,就会变成 AB
那么处理完就这样了
select friend,count(friend) from
(select if(substr(str,1,1)>substr(str,2,1),reverse(str) ,str ) as friend from k2) t1
group by friend where friend=2;
也就是谁和谁是好友出现了两次 , 就是共同好友 , 之所以出现两次 , 因为我们人为的把AB->AB BA->BA ,
这样省去了 判断AB 和 BA