题解 | #广告点击的高峰期#
广告点击的高峰期
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的即可
