Pārlūkot izejas kodu

添加练习统计

yuanliang 1 gadu atpakaļ
vecāks
revīzija
929104d372

+ 14 - 6
mec-biz/src/main/resources/config/mybatis/StudentCoursewarePlayRecordMapper.xml

@@ -18,18 +18,22 @@
              , count(s.user_id_)                                                                                 as memberNum
              , (count(distinct s.user_id_) - count(distinct pr.user_id_))                                        as noPlayNum
              , count(distinct if(10 * 60 >= pr.play_time_, pr.user_id_, null))                                   as playTimeLess10
-             , count(distinct if(pr.play_time_ > 10 * 60 and 600 * 60 >= pr.play_time_, pr.user_id_, null))      as playTimeLess60
-             , count(distinct if(pr.play_time_ > 10 * 60 and 120 * 60 >= pr.play_time_, pr.user_id_, null))      as playTimeLess120
+             , count(distinct if(pr.play_time_ > 10 * 60 and 60 * 60 >= pr.play_time_, pr.user_id_, null))       as playTimeLess60
+             , count(distinct if(pr.play_time_ > 60 * 60 and 120 * 60 >= pr.play_time_, pr.user_id_, null))      as playTimeLess120
              , count(distinct if(pr.play_time_ > 120 * 60 and 240 * 60 >= pr.play_time_, pr.user_id_, null))     as playTimeLess240
              , count(distinct if(pr.play_time_ > 240 * 60, pr.user_id_, null))                                   as playTimeRather240
              , if(count(distinct pr.user_id_) = 0, 0, (sum(pr.play_time_) / (count(distinct pr.user_id_) * 60))) as avgPlayTime
         from organization o
                  left join sys_user su on o.id_ = su.organ_id_
                  left join student s on s.user_id_ = su.id_
-                 left join student_courseware_play_record pr on s.user_id_ = pr.user_id_ and pr.create_time_ > #{statQuery.startTime} and #{statQuery.endTime} > pr.create_time_
+                 left join (select user_id_, sum(play_time_) play_time_
+                            from student_courseware_play_record
+                            where create_time_ > #{statQuery.startTime}
+                              and #{statQuery.endTime} > create_time_
+                            group by user_id_) pr on s.user_id_ = pr.user_id_
         where s.membership_end_time_ >= now()
         group by o.id_
-        order by #{statQuery.sortBy}
+        order by ${statQuery.sortBy}
     </select>
     <select id="statDetailPage" resultType="com.ym.mec.biz.dal.wrapper.StudentCoursewarePlayRecordWrapper$StatQueryData">
         select o.id_                                                                                             as organizationId
@@ -48,10 +52,14 @@
                  left join student s on s.user_id_ = su.id_
                  left join student_teacher_mapper stm on stm.student_id_ = s.user_id_
                  left join sys_user su2 on su2.id_ = stm.teacher_id_
-                 left join student_courseware_play_record pr on s.user_id_ = pr.user_id_ and pr.create_time_ > #{statQuery.startTime} and #{statQuery.endTime} > pr.create_time_
+                 left join (select user_id_, sum(play_time_) play_time_
+                            from student_courseware_play_record
+                            where create_time_ > #{statQuery.startTime}
+                              and #{statQuery.endTime} > create_time_
+                            group by user_id_) pr on s.user_id_ = pr.user_id_
         where o.id_ = #{statQuery.organizationId}
           and s.membership_end_time_ >= now()
         group by stm.teacher_id_
-        order by #{statQuery.sortBy}
+        order by ${statQuery.sortBy}
     </select>
 </mapper>