WITH uv_tb AS ( SELECT course_id, user_id, in_datetime AS dt, 1 AS uv FROM attend_tb UNION ALL SELECT course_id, user_id, out_datetime, -1 AS uv FROM attend_tb ), cumulative_uv AS ( SELECT u.course_id, c.course_name, u.dt, SUM(u.uv) OVER (PARTITION BY u.course_id ORDER BY u.dt) AS uv_cnt FROM uv_tb ...