|
@@ -0,0 +1,163 @@
|
|
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
|
|
+<mapper namespace="vip.xiaonuo.disk.mapper.TeachingActivityMapper">
|
|
|
|
|
+
|
|
|
|
|
+ <select id="documentStatistic" resultType="map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ COUNT(DISTINCT ctb.USER_ID) AS alreadyUserCount,
|
|
|
|
|
+ COUNT(DISTINCT stu.ID) AS allUserCount,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ WHEN COUNT(DISTINCT stu.ID) > 0 THEN
|
|
|
|
|
+ ROUND(
|
|
|
|
|
+ CAST(COUNT(DISTINCT ctb.USER_ID) AS FLOAT) / COUNT(DISTINCT stu.ID),
|
|
|
|
|
+ 2
|
|
|
|
|
+ )
|
|
|
|
|
+ ELSE 0
|
|
|
|
|
+ END AS finishRate
|
|
|
|
|
+ FROM COURSE_INFO ci
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND ctb.FUNC_TYPE='2' AND ctb.TYPE='1' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
|
|
|
|
|
+ <where>
|
|
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
|
|
+ AND ci.COURSE_ID = #{courseId}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.startTime != null">
|
|
|
|
|
+ AND ctb.create_time >= #{map.startTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.endTime != null">
|
|
|
|
|
+ AND ctb.create_time <= #{map.endTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ AND ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ </where>
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <select id="documentJumpStatistic" resultType="map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ ifnull(ROUND(AVG(ctb.END_TIME), 2),0) AS jumpAvgTime,
|
|
|
|
|
+ COUNT(DISTINCT cch.ID) AS allHourCount,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ WHEN COUNT(DISTINCT cch.ID) > 0 THEN
|
|
|
|
|
+ ROUND(
|
|
|
|
|
+ CAST(COUNT(DISTINCT ctb.HOUR_ID) AS FLOAT) / COUNT(DISTINCT cch.ID),
|
|
|
|
|
+ 2
|
|
|
|
|
+ )
|
|
|
|
|
+ ELSE 0
|
|
|
|
|
+ END AS finishRate
|
|
|
|
|
+ FROM COURSE_INFO ci
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND ctb.FUNC_TYPE='2' AND ctb.TYPE='1' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
|
|
|
|
|
+ <where>
|
|
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
|
|
+ AND ci.COURSE_ID = #{courseId}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.startTime != null">
|
|
|
|
|
+ AND ctb.create_time >= #{map.startTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.endTime != null">
|
|
|
|
|
+ AND ctb.create_time <= #{map.endTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ AND ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ </where>
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <select id="courseOpenStatistic" resultType="map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ TO_CHAR(ctb.create_time, 'YYYY-MM-DD') AS time,
|
|
|
|
|
+ count(DISTINCT ctb.USER_ID ) num
|
|
|
|
|
+ FROM COURSE_INFO ci
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
|
|
|
|
|
+ <where>
|
|
|
|
|
+ ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
|
|
+ AND ci.COURSE_ID = #{courseId}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.startTime != null">
|
|
|
|
|
+ AND ctb.create_time >= #{map.startTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.endTime != null">
|
|
|
|
|
+ AND ctb.create_time <= #{map.endTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ AND ctb.create_time IS NOT null
|
|
|
|
|
+ </where>
|
|
|
|
|
+ GROUP BY TO_CHAR(ctb.create_time, 'YYYY-MM-DD')
|
|
|
|
|
+ ORDER BY TO_CHAR(ctb.create_time, 'YYYY-MM-DD')
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <select id="documentDetailStatistic" resultType="map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ ctb.file_id fileId,
|
|
|
|
|
+ ctb.FILE_NAME fileName,
|
|
|
|
|
+ count(DISTINCT stu.id) seeNum ,
|
|
|
|
|
+ count(DISTINCT ctb.USER_ID ) finishNum,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ WHEN COUNT(DISTINCT stu.ID) > 0 THEN
|
|
|
|
|
+ ROUND(
|
|
|
|
|
+ CAST(COUNT(DISTINCT ctb.USER_ID) AS FLOAT) / COUNT(DISTINCT stu.ID),
|
|
|
|
|
+ 2
|
|
|
|
|
+ )
|
|
|
|
|
+ ELSE 0
|
|
|
|
|
+ END AS finishRate,
|
|
|
|
|
+ ifnull(ROUND(AVG(ctb.END_TIME), 2),0) AS jumpAvgTime,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ WHEN COUNT(DISTINCT stu.ID) > 0 THEN 1-
|
|
|
|
|
+ ROUND(
|
|
|
|
|
+ CAST(COUNT(DISTINCT ctb.USER_ID) AS FLOAT) / COUNT(DISTINCT stu.ID),
|
|
|
|
|
+ 2
|
|
|
|
|
+ )
|
|
|
|
|
+ ELSE 0
|
|
|
|
|
+ END AS jumpRate,
|
|
|
|
|
+ count(ctb1.id) downNum
|
|
|
|
|
+ FROM COURSE_INFO ci
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb ON ctb.DELETE_FLAG ='NOT_DELETE' AND ctb.FUNC_TYPE='2' AND ctb.TYPE='1' AND cch.ID =ctb.HOUR_ID AND stu.ID=ctb.USER_ID
|
|
|
|
|
+ LEFT JOIN COURSE_STUDENT_BURIALPOINT ctb1 ON ctb1.DELETE_FLAG ='NOT_DELETE' AND ctb.FUNC_TYPE='2' AND ctb.TYPE='2' AND cch.ID =ctb1.HOUR_ID AND stu.ID=ctb1.USER_ID
|
|
|
|
|
+ <where>
|
|
|
|
|
+ ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
|
|
+ AND ci.COURSE_ID = #{courseId}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.startTime != null">
|
|
|
|
|
+ AND ctb.create_time >= #{map.startTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="map.endTime != null">
|
|
|
|
|
+ AND ctb.create_time <= #{map.endTime}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ AND ctb.create_time IS NOT null
|
|
|
|
|
+ </where>
|
|
|
|
|
+ GROUP BY ctb.file_id,ctb.FILE_NAME
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+</mapper>
|