#要我说出题的人就有毛病,你直接说输出小于等于3的数值就完了,还在排名+1 我真是服了。 #我都不知道那边全了,是搜素的人多还是点击的人多,毕竟需要有可能有一边是空值,服了。 with tiaojian as ( select uid, count(query_kw) as search_num from search_log_tb group by uid ),tiaojian1 as ( select uid, count(id) as click_num from click_log_tb group by uid ) select t.uid, t.search_num, ifnull( t.click_num,0) as click_num, t.search_rank, t.click_rank from( select t.uid, t.search_num, t1.click_num, dense_rank()over(order by t.search_num desc) as search_rank, dense_rank()over(order by t1.click_num desc) as click_rank from tiaojian t left join tiaojian1 t1 on t.uid=t1.uid ) as t where t.search_rank<=2 or t.click_rank<=2