zoukankan      html  css  js  c++  java
  • 电影sql问题

    看的次数多 或者 评分高

    每个用户最喜欢哪个类型的电影

    row_number()

    ratings表中一个电影出现几次?

    一个电影有几种类型?

    类型在movies   评分或者观看次数ratings

    movies join ratings

    //将类型炸开

    select mid,mname,lx from movies lateral view explode(split(type,"\|")) types as lx;//这是炸开的表

    //观看的次数  类型  id

    select count(*) cnt,r.uid,t.lx

    (select mid,mname,lx from movies lateral view explode(split(type,"\|")) types as lx ) t,ratings r

    where r.mid=t.mid  

    group by r.uid,t.lx

    //开窗函数

    select t2.uid,t2.lx

    from

    (select row_number() over (partition by t1.uid order by t1.cnt desc) rn,t1.uid,t1.lx

    from

    (select count(*) cnt,r.uid,t.lx

    (select mid,mname,lx from movies lateral view explode(split(type,"\|")) types as lx ) t,ratings r

    where r.mid=t.mid  

    group by r.uid,t.lx) t1)t2

    where t2.rn=1;

    //uid lx  这个用户最喜欢的类型

    ======================================================================================

    lx m1 m2 m3 

    //电影表

    select mid,mname,lx from movies lateral view explode(split(type,"\|")) types as lx

    select count(*) cnt,t.lx,r.mid

    (select mid,mname,lx from movies lateral view explode(split(type,"\|")) types as lx) t,ratings r

    where r.mid=t.mid

    group t.lx=r.mid; 

    select row_number() overs (partition by t1.lx order by t1.cnt desc),t1.lx,t1.mid

    (select count(*) cnt,t.lx,r.mid

    (select mid,mname,lx from movies lateral view explode(split(type,"\|")) types as lx) t,ratings r

    where r.mid=t.mid

    group t.lx=r.mid) t1

    //

    select t2.lx,t2.mid

    from

    (select row_number() overs (partition by t1.lx order by t1.cnt desc) rn,t1.lx,t1.mid

    (select count(*) cnt,t.lx,r.mid

    (select mid,mname,lx from movies lateral view explode(split(type,"\|")) types as lx) t,ratings r

    where r.mid=t.mid

    group t.lx=r.mid) t1) t2

    每个类型最受欢迎的前三个电影

    类型==类型

  • 相关阅读:
    SQL Server 中关于EXCEPT和INTERSECT的用法
    SQL SERVER 索引中聚集索引分析和Transact-SQL语句优化
    DATEDIFF() 返回2个日期之间的间隔
    CharIndex()
    poj1470 Closest Common Ancestors [ 离线LCA tarjan ]
    2014 蓝桥杯 预赛 c/c++ 本科B组 第九题:地宫取宝(12') [ dp ]
    hdu 2438 Turn the corner [ 三分 ]
    poj 3295 Tautology [ 栈 ]
    hdu 4923 Room and Moor [ 找规律 + 单调栈 ]
    1597: [Usaco2008 Mar]土地购买 [ dp+斜率优化 ] 未完
  • 原文地址:https://www.cnblogs.com/JBLi/p/10857553.html
Copyright © 2011-2022 走看看