【面试题】某游戏数据后台设有“登录日志”和“登出日志”两张表。
“登录日志”记录各玩家的登录时间和登录时的角色等级。
其中,“角色id”字段唯一识别玩家。
游戏开服前两天(2022-08-13至2022-08-14)的角色登录和登出日志如下
一天中,玩家可以多次登录登出游戏,请使用SQL分析出以下业务问题:
请根据玩家登录登出的时间,统计在开服首日各玩家在线时长分布。
(如玩家登录后没有对应的登出日志,可以使用当天23:59:59作为登出时间,时间之间的计算可以考虑使用时间戳函数unix_timestamp。【区分在线时间段:0-30min,30min-1h,1-2h,2-3h,3-5h,5h以上;区间为左闭右开】)
问题5:
统计在开服首日各玩家在线时长分布,其中区分在线时间段:0-30min,30min-1h,1-2h,2-3h,3-5h,5h以上,区间为左闭右开,解释为大白话即为:统计2022-08-13,在线时间段在0-30min、30min-1h、1-2h、2-3h、3-5h、5h以上的玩家各有多少人。
统计人数使用count()函数,而玩家的在线时间段可以用case when子句进行条件判断,即使用case when子句判断各玩家的总在线时长在哪个在线时间段内:
case when 总在线时长_min>=0 and 总在线时长_min<30 then '0-30min'
when 总在线时长_min>=30 and 总在线时长_min<60 then '30min-1h'
when 总在线时长_min>=60 and 总在线时长_min<120 then '1-2h'
when 总在线时长_min>=120 and 总在线时长_min<180 then '2-3h'
when 总在线时长_min>=180 and 总在线时长_min<300 then '3-5h'
else &#