统计不同用户两两之间出现的相同产品

数据样例:

U3 A

U1 B

U2 A

U4 A

--结果: U1,U2 A,B

U1,U3 A

U1,U4 A

U2,U3 A

U2,U4 A

U3,U4 A

要点:先按照用户分区排序,使用窗口函数做出标记,然后按照左表rank值小于右表rank值和两两用户不为相同用户的规则关联,使用列转行的方式(collect_set)将value值合并
select concat_ws(",",a.user,b.user) as user,concat_ws(",",collect_set(a.goods)) as goods
from
    (select row_number() over( order by user) rank,user,goods from tmp.normal) a
inner join 
    (select row_number() over(order by user) rank,user,goods from tmp.normal) b
on a.goods = b.goods
where a.rank<b.rank and levenshtein(a.user,b.user) !=0
group by concat_ws(",",a.user,b.user)

转载于:https://my.oschina.net/lzhaoqiang/blog/3064048

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值