SELECT
cid,
ROUND(MAX(peak_uv),3) as max_peak_uv
FROM
(
SELECT
cid,
SUM(tag) over(partition by cid ORDER BY time) as peak_uv
FROM
(
SELECT
cid,
start_time as time,
1 as tag
FROM
play_record_tb
union all
SELECT
cid,
end_time as time,
-1 as tag
FROM
play_record_tb
) a
) b
GROUP BY
cid
ORDER BY
max_peak_uv DESC
LIMIT 3
- 窗口函数SUM(),从分区开头一直累加到当前行
- UNION ALL 是把多条 SELECT 语句结果简单地“拼在一起”——得到的结果集保留所有行(包括重复行),并且各列数和列顺序必须一致。UNION会去重。

京公网安备 11010502036488号