题解 | #牛客直播各科目出勤率#
牛客直播各科目出勤率
http://www.nowcoder.com/practice/0cab547df4f0430b93042128f445d899
- 题目需要统计各个科目的出勤率(出勤率=出勤(在线时长10分钟及以上)人数 / 报名人数)
- 对于分子报名人数的计算,通过behavior_tb表根据if_sign是否为1来判断汇总即可
- 对于分母有效出勤人数的计算,通过attend_tb表根据时间差是否大于等于10来判断,通过timestampdiff()函数来进行计算
- 通过with as 将三张表连接,通过user_id连接三表计算即可
函数分享
timestampdiff(interval,datetime1,datetime2) 返回(时间2-时间1)的时间差,结果单位由interval参数给出
interval包括:second 秒 minute分钟 hour小时 day天 week周 month月 quarter季度 year年
with a as(
select course_id,course_name
from course_tb
),
b as(
select course_id,sum(if_sign) total_num
from behavior_tb
group by course_id
),
c as(
select course_id,count(distinct case when timestampdiff(minute,in_datetime,out_datetime) >=10 then user_id else null end) cc
from attend_tb
group by course_id
)
select course_id,course_name,round(round(c.cc/b.total_num,4)*100,2) attend_rate
from a join b using(course_id)
join c using(course_id)