题解 | #网易云音乐推荐(网易校招笔试真题)#

网易云音乐推荐(网易校招笔试真题)

http://www.nowcoder.com/practice/048ed413ac0e4cf4a774b906fc87e0e7

# 明确问题:查询向user_id = 1 的用户,推荐其关注的人喜欢的音乐。
# 不要推荐该用户已经喜欢的音乐,并且按music的id升序排列。你返回的结果中不应当包含重复项
# 首先我们要知道user_id = 1 的用户喜欢的音乐
  •  (select c.id,c.music_name
  •  from follow as a
  • join music_likes as b
  •  on a.user_id=b.user_id
  •  join music as c
  •  on b.music_id=c.id  and a.user_id= 1
  • group by c.id,c.music_name) y
# 然后找出user_id = 1 关注的ID喜欢的音乐
  • (select c.id,c.music_name
  • from 
  •  (select follower_id
  •  from follow
  •  where  user_id = 1 ) as a
  • join music_likes as b 
  • on a. follower_id=b.user_id
  •  join music as c 
  • on b.music_id=c.id) x
最后user_id = 1 关注的ID喜欢的音乐NOT IN user_id = 1 喜欢的音乐即可
SELECT
    music_name 
FROM
    (
    SELECT
        c.id,
        c.music_name 
    FROM
        ( SELECT follower_id FROM follow WHERE user_id = 1 ) AS a
        JOIN music_likes AS b ON a.follower_id = b.user_id
        JOIN music AS c ON b.music_id= c.id 
    GROUP BY
        c.id,
        c.music_name 
    ) x 
WHERE
    x.id NOT IN (
    SELECT
        c.id 
    FROM
        follow AS a
        JOIN music_likes AS b ON a.user_id = b.user_id
        JOIN music AS c ON b.music_id= c.id 
        AND a.user_id = 1 
    GROUP BY
        c.id 
    
ORDER BY
    x.id


全部评论

相关推荐

10-25 22:20
门头沟学院 Java
代码飞升:同学院本,个人亮点去了,打招呼里面的废话也去了,学院本就是路边一条,明天拉满然后该学还是学,小厂也行尽量先有一段实习。另外你的项目描述写的不好,具体列一下可被提问的点,然后量化一下指标或者收益吧
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务