题解 | #牛客直播各科目出勤率#
牛客直播各科目出勤率
https://www.nowcoder.com/practice/0cab547df4f0430b93042128f445d899
- 在线时间10分钟以上
- sum(timestampdiff(minute,in_datetime,out_datetime))>=10
- 先从第三个表中找到出勤人数
- select course_id,count(distinct case when timestampdiff(minute,in_datetime,out_datetime)>=10 then user_id else null end) attend
- from attend_tb
- group by course_id
- 从第二个表中找到每个课程的报名人数
- select course_id,sum(if_sign) sign
- from behavior_tb
- group by course_id
- 将三个表用course_id连接起来,从第一个表中取出course_id,course_name,利用第二个中得到的报名人数和第三个表中得到的出勤人数计算出勤率
- select a.course_id,a.course_name,c.attend/b.sign as 'attend_rate(%)'
- from course_tb a
- join (
- select course_id,count(distinct case when timestampdiff(minute,in_datetime,out_datetime)>=10 then user_id else null end) attend
- from attend_tb
- group by course_id) c
- on a.course_id=c.course_id
- join (
- select course_id,sum(if_sign) sign
- from behavior_tb
- group by course_id) b
- on a.course_id=b.course_id
- order by a.course_id
- 注意:可以用using()实现表连接,或者用with a as(),b as(),c as () select...实现