题解 | #广告点击的高峰期#
广告点击的高峰期
https://www.nowcoder.com/practice/6756d65784f9413b8505c1d0c6754b3a
-- 使用rank窗口函数 SELECT click_hour, click_cnt FROM ( SELECT click_hour, click_cnt, RANK() OVER(ORDER BY click_cnt DESC) AS click_cnt_rank FROM ( SELECT HOUR(click_time) AS click_hour, COUNT(click_time) AS click_cnt FROM user_ad_click_time GROUP BY click_hour ORDER BY click_cnt DESC ) AS t1 ) AS t2 WHERE click_cnt_rank = 1;
这题如果直接使用limit,可能会忽略不同小时,但具有相同的最大点击次数。比如12时和13时点击次数都为10次时;
因此,先利用子查询计算每个小时的点击次数,然后利用窗户函数计算点击次数排序(无需分组,以点击次数排序就行)
这样可以得到点击次数的排序,然后选择排序为1的即可