SQL出勤率

: user_login
字段:user_id course_id login_in login_out
:course_apply
字段:course_id user_id(是个列表 【1,2,3,4】)
需求:出勤率指用户看直播时间超过40分钟,则视为出勤

期望结果:
课程id 出勤率
注意: 转成时间戳再减,单位是秒,要转换成分

 1 select l.course_id,l.ct / r.sumct 出勤率  from (
 2     
 3     select 
 4     -- 分子
 5      course_id,sum(if(flag = 1 ,1,0)) ct  
 6      from (
 7          select 
 8          -- 判断是否有效出勤
 9           user_id,course_id,if(sum(dfmint)>=40,1,0) flag
10           from (
11             select 
12              
13              user_id,course_id,(ous-ins) / 60 dfmint
14              from (
15             
16             select  user_id,course_id, unix_timestamp(login_in,'yyyy-MM-dd HH:mm:ss') as ins
17             ,unix_timestamp(login_out,'yyyy-MM-dd HH:mm:ss') as ous from  user_login 
18             ) a
19         ) b group by user_id,course_id
20     ) c group by course_id
21 ) l join (
22 
23     select course_id,size(user_id) sumct from course_apply 
24 ) r on l.course_id = r.course_id

 

posted on 2025-06-23 12:25  北京的小乔  阅读(11)  评论(0)    收藏  举报