题解 | 每篇文章同一时刻最大在看人数
每篇文章同一时刻最大在看人数
https://www.nowcoder.com/practice/fe24c93008b84e9592b35faa15755e48
SELECT
artical_id,
MAX(user_cnt) AS max_uv
FROM(
SELECT
artical_id,
SUM(cnt) OVER(PARTITION BY artical_id ORDER BY time, cnt DESC) AS user_cnt # 条件先记录增加
FROM(
SELECT
artical_id,
in_time AS time,
1 AS cnt
FROM tb_user_log
WHERE artical_id != 0
UNION ALL # 一定得UNION ALL, UNION会自动去除重复行
SELECT
artical_id,
out_time AS time,
-1 AS cnt
FROM tb_user_log
WHERE artical_id != 0 # 这个条件不明显
) AS tb1
) AS tb2
GROUP BY artical_id
ORDER BY max_uv DESC # 条件降序
# 其余都挺简单的

查看14道真题和解析