Hive 刷题——向用户推荐朋友收藏的商品

需求描述

现需要请向所有用户推荐其朋友收藏但是用户自己未收藏的商品,请从好友关系表(friendship_info)和收藏表(favor_info)中查询出应向哪位用户推荐哪些商品。
期望结果如下:
user_id
 
(用户id)
sku_id
 
(应向该用户推荐的商品id)
101
2
101
4
101
7
101
9
101
8
101
11
101
1
需要用到的表:
好友关系表:friendship_info
user1_id(用户1 id)
user2_id(用户2 id)
101
1010
101
108
101
106
收藏表:favor_info
user_id(用户id)
sku_id(商品id)
create_date(收藏日期)
101
3
2021-09-23
101
12
2021-09-23
101
6
2021-09-25

参考SQL

select t.user1_id user_id, t.sku_id
from (select user1_id, sku_id
      from friendship_info f
               join favor_info f1 on f.user2_id = f1.user_id
      group by user1_id, sku_id) t
         left join
     (select user1_id, sku_id
      from friendship_info f
               join favor_info f1 on f.user1_id = f1.user_id
      group by user1_id, sku_id) t1
     on t.user1_id = t1.user1_id and t.sku_id = t1.sku_id
where t1.user1_id is null
  and t1.sku_id is null
order by 1;
posted @ 2023-01-17 06:43  晓枫的春天  阅读(75)  评论(0编辑  收藏  举报