• 超多sql分步骤类型题解


    超多sql分步骤类型题解

    --推荐簇每个userId,超过2个相似用户(score>50)购买过的item,排除掉自己购买过的item
    想了想,没有套路,就是多练

    # --订单表: orders ; 字段: userId , itemId , addTime 
    # --相似度表: similar ; 字段: userId , anotherUserId , score 
    # --输出格式: userId , itemList (逗号分隔)
    # 比如 A与 B,C相似,推荐B,C购买过的 item ,其中去掉A购买的 item
    
    思路 :
    SELECT * FROM similar WHERE score>50
    # 筛选出每个用户的相似用户的 所有 itemId 
    SELECT t1.userId AS userId
    FROM t1 LEFT JOIN orders t2
    ON t1.anotherUserId=t2.userId GROUP BY t1.userId, t2.itemId HAVING COUNT(t1.anotherUserId)>=2
    # 筛选出每个用户它的相似用户的 所有 itemId 以及 本身的itemId
    SELECT t3.userId AS userId,t3.itemId AS itemId,t4.itemId AS itemId_1 FROM t3 LEFT JOIN orders t4 ON t3.userId=t4.userId AND t3.itemId=t4.itemId
    # 集合内列表
    SELECT userId,collect_set(',',itemId) FROM t5 WHERE itemId_1 IS NULL GROUP BY userId;
    
    Hive中collect相关的函数有collect_list和collect_set。
    
    它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重。
    

    [collect相关的函数] (https://www.cnblogs.com/cc11001100/p/9043946.html)

  • 相关阅读:
    python3.7版本安装pyinstaller
    Redis
    电商路演
    前台Vue、后台Django、设置axios解决csrf_token问题
    企业为什么要设置中台
    2021.1.11 学习总结
    2021.1.10 学习总结
    2021.1.9 学习总结
    2021.1.8 学习总结
    2021.1.7 学习总结
  • 原文地址:https://www.cnblogs.com/alidata/p/13782902.html
Copyright © 2020-2023  润新知