此题共包含两张表:
表1:course_tb
表2:attend_tb
要解决的问题:
请你统计每个科目最大同时在线人数(按course_id排序)
解题思路:
- 首先将in_datetime和out_datetime放到一列,然后按时间排序,其中将in_datetime添加辅助列1,将out_datetime添加辅助列-1
- 按科目类型排序,计算出每科最多达的在线人数
- 按course_id排序
SELECT course_id, course_name, max(assist) max_num
from(
SELECT course_id, time,
sum(ass) over(PARTITION by course_id ORDER BY time) assist
from(
SELECT course_id, in_datetime time, 1 ass
from attend_tb
union all
SELECT course_id, out_datetime time, -1 ass
from attend_tb
ORDER BY time
) temp
)t1
left join course_tb using(course_id)
GROUP BY course_id,course_name
ORDER BY course_id