TOP N问题
已知用户浏览商品的浏览日志表(visit_table):
求2月份每个商品浏览次数Top 3。
select name ,userid ,visit_cnt from ( select * ,row_number(position by name order by visit_cnt desc) as cnt from ( select name ,userid ,count(1) as visit_cnt from visit_table where login_date>='2021/2/1' and login_date<='2021/2/28' group by name,userid ) a ) b where cnt<=3
思路解析:
1、先统计每个商品、每个用户的浏览次数(visit_cnt),得到表 a
2、对表a求出每个商品浏览次的数降序排名,得到表b
3、对排序cnt进行top 3筛选操作