Hive综合案例练习(中级)第十四题:向用户推荐朋友收藏的商品

向用户推荐朋友收藏的商品

题目需求

现需要请向所有用户推荐其朋友收藏但是用户自己未收藏的商品,请从好友关系表(friendship_info)和收藏表(favor_info)中查询出应向哪位用户推荐哪些商品。期望结果如下:

1)部分结果展示

user_id(用户id) sku_id(应向该用户推荐的商品id)
101 2
101 4
101 7
101 9
101 8
101 11
101 1

2)完整结果

user_id	sku_id
101	2
101	4
101	7
101	9
101	8
101	11
101	1
102	3
102	5
102	10
103	2
103	1
103	9
104	1
104	4
104	10
104	5
104	2
105	1
105	2
105	6
105	12
105	3
106	11
106	10
106	8
106	9
106	3
107	11
107	7
107	4
107	9
107	12
107	1
107	8
107	6
107	2
108	2
108	6
108	12
108	1
108	7
108	4
108	5
109	6
109	10
109	7
109	1
109	12
109	3
109	11
1010	4
1010	10
1010	6
1010	12
1010	11
1010	8
1010	3
1010	5
1010	7

代码实现

select
    distinct t1.user_id,
    friend_favor.sku_id
from
(
    select
        user1_id user_id,
        user2_id friend_id
    from friendship_info
    union
    select
        user2_id,
        user1_id
    from friendship_info
)t1
left join favor_info friend_favor
on t1.friend_id=friend_favor.user_id
left join favor_info user_favor
on t1.user_id=user_favor.user_id
and friend_favor.sku_id=user_favor.sku_id
where user_favor.sku_id is null;

你可能感兴趣的:(Hive综合案例练习,hivesql)