|
@@ -0,0 +1,1159 @@
|
|
|
|
|
+<?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.StudyBehaviorProgressMapper">
|
|
|
|
|
+
|
|
|
|
|
+ <select id="getAllCourseCount" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ COUNT(ci.COURSE_ID) AS allCourseCount
|
|
|
|
|
+ FROM COURSE_INFO ci
|
|
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getActiveCourseCount" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ COUNT(z1.courseId) AS activeCourseCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- csb.USER_ID AS userId
|
|
|
|
|
+ t1.courseId AS courseId
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ )t1
|
|
|
|
|
+ JOIN (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ csb1.USER_ID,
|
|
|
|
|
+ csb1.HOUR_ID
|
|
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND csb1.FUNC_TYPE='1'
|
|
|
|
|
+ AND csb1.TYPE='1'
|
|
|
|
|
+ -- AND csb1.CREATE_TIME > ='2025-09-01 00:00:00'
|
|
|
|
|
+ -- AND csb1.CREATE_TIME < ='2025-09-30 23:59:59'
|
|
|
|
|
+ GROUP BY csb1.USER_ID,csb1.HOUR_ID
|
|
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ GROUP BY t1.courseId
|
|
|
|
|
+ )z1
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getCourseVisitCount" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ CASE
|
|
|
|
|
+ when z1.courseAllCount=0 or z1.courseAllCount is NULL OR z1.activeCourseCount=0 OR z1.activeCourseCount IS null then 0
|
|
|
|
|
+ else TRUNC(z1.activeCourseCount * 1.0 / z1.courseAllCount, 2)
|
|
|
|
|
+ END AS courseVisitRate
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ (
|
|
|
|
|
+ SELECT COUNT(ci1.COURSE_ID)
|
|
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
|
|
+ WHERE ci1.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ ) AS courseAllCount,
|
|
|
|
|
+ (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ COUNT(z1.courseId)
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- csb.USER_ID AS userId
|
|
|
|
|
+ t1.courseId AS courseId
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ )t1
|
|
|
|
|
+ JOIN (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ csb1.USER_ID,
|
|
|
|
|
+ csb1.HOUR_ID
|
|
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND csb1.FUNC_TYPE='1'
|
|
|
|
|
+ AND csb1.TYPE='1'
|
|
|
|
|
+ -- AND csb1.CREATE_TIME >='2025-09-01 00:00:00'
|
|
|
|
|
+ -- AND csb1.CREATE_TIME <='2025-09-30 23:59:59'
|
|
|
|
|
+ GROUP BY csb1.USER_ID,csb1.HOUR_ID
|
|
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ GROUP BY t1.courseId
|
|
|
|
|
+ )z1
|
|
|
|
|
+ )AS activeCourseCount
|
|
|
|
|
+ FROM DUAL
|
|
|
|
|
+ )z1
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getAllLoginCount" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ ifnull(COUNT(dl.ID),0) AS allloginCount
|
|
|
|
|
+ FROM DEV_LOG dl
|
|
|
|
|
+ WHERE dl.CATEGORY='LOGIN'
|
|
|
|
|
+ AND dl.EXE_STATUS='SUCCESS'
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getUserCount" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ ifnull(COUNT(su.ID),0) AS userCount
|
|
|
|
|
+ FROM SYS_USER su
|
|
|
|
|
+ WHERE su.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getAvgLoginCount" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ ifnull(TRUNC(AVG(t1.userLoginCount), 2) ,0) AS avgLoginCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ dl.OP_USER AS opUser,
|
|
|
|
|
+ COUNT(dl.ID) AS userLoginCount
|
|
|
|
|
+ FROM DEV_LOG dl
|
|
|
|
|
+ WHERE dl.CATEGORY='LOGIN'
|
|
|
|
|
+ AND dl.EXE_STATUS='SUCCESS'
|
|
|
|
|
+ GROUP BY dl.OP_USER
|
|
|
|
|
+ )t1
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getUserAllStayTime" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ LPAD(FLOOR(tt1.userAllStayTIme / 3600000), 5, '0') || '小时' ||
|
|
|
|
|
+ LPAD(FLOOR((tt1.userAllStayTIme % 3600000) / 60000), 2, '0') || '分钟' AS userAllStayTime
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t1.userId AS userId,
|
|
|
|
|
+ -- IFNULL(csb.STAY_TIME,0) AS stayTime
|
|
|
|
|
+ IFNULL(SUM(csb.STAY_TIME),0) AS userAllStayTIme
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ )t1
|
|
|
|
|
+ LEFT JOIN (SELECT csb1.USER_ID,csb1.HOUR_ID,csb1.STAY_TIME FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t1.courseId='1954728193252552705'
|
|
|
|
|
+ )tt1
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getAvgStayTime" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ LPAD(FLOOR(tt1.avgStayTime / 3600000), 5, '0') || '小时' ||
|
|
|
|
|
+ LPAD(FLOOR((tt1.avgStayTime % 3600000) / 60000), 2, '0') || '分钟' AS avgStayTime
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ TRUNC(IFNULL(AVG(z1.userAllStayTIme),0), 2) AS avgStayTime
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t1.userId AS userId,
|
|
|
|
|
+ -- IFNULL(csb.STAY_TIME,0) AS stayTime
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ IFNULL(SUM(csb.STAY_TIME),0) AS userAllStayTIme
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ )t1
|
|
|
|
|
+ LEFT JOIN (SELECT csb1.USER_ID,csb1.HOUR_ID,csb1.STAY_TIME FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t1.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t1.userId
|
|
|
|
|
+ )z1
|
|
|
|
|
+ )tt1
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getPeakWatchUserCount" resultType="java.lang.String">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ IFNULL(zz1.watchCount,0)AS peakWatchUserCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- z1.csbCreateTime AS csbCreateTime,
|
|
|
|
|
+ z1.watchCount AS watchCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ tt1.csbCreateTime AS csbCreateTime,
|
|
|
|
|
+ count(csbId) AS watchCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t1.hourId AS hourId,
|
|
|
|
|
+ t1.chapterId AS chapterId,
|
|
|
|
|
+ t1.courseId AS courseId,
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ DATE_FORMAT(csb.CREATE_TIME, '%Y-%m-%d') AS csbCreateTime,
|
|
|
|
|
+ csb.ID AS csbId
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ )t1
|
|
|
|
|
+ LEFT JOIN (SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.CREATE_TIME FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t1.courseId='1954728193252552705'
|
|
|
|
|
+ )tt1
|
|
|
|
|
+ GROUP BY tt1.csbCreateTime
|
|
|
|
|
+ )z1
|
|
|
|
|
+ ORDER BY z1.watchCount DESC
|
|
|
|
|
+ LIMIT 1
|
|
|
|
|
+ )zz1
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getLoginFrameDistribution" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t1.createTime AS createTime,
|
|
|
|
|
+ COUNT(t1.createTime) AS count
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ DATE_FORMAT(dl.CREATE_TIME, '%H') || ':00' AS createTime
|
|
|
|
|
+ FROM DEV_LOG dl
|
|
|
|
|
+ WHERE dl.CATEGORY='LOGIN'
|
|
|
|
|
+ AND dl.EXE_STATUS='SUCCESS'
|
|
|
|
|
+ )t1
|
|
|
|
|
+ GROUP by t1.createTime
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getCourseVisitHeatRank" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ ci.courseId AS courseId,
|
|
|
|
|
+ IFNULL(ci.courseName,'') AS courseName,
|
|
|
|
|
+ IFNULL(finalTwo.watchCount,0) AS watchCount
|
|
|
|
|
+ FROM(SELECT ci1.COURSE_ID AS courseId, IFNULL(ci1.COURSE_NAME,'') AS courseName FROM COURSE_INFO ci1 LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE' WHERE ci1.DELETE_FLAG='NOT_DELETE' GROUP BY ci1.COURSE_ID,ci1.COURSE_NAME)ci
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- z1.courseId AS courseId,
|
|
|
|
|
+ -- z1.hourId AS hourId,
|
|
|
|
|
+ -- z1.csbId AS csbId
|
|
|
|
|
+ -- z1.userId AS userId
|
|
|
|
|
+ z1.courseId AS courseId,
|
|
|
|
|
+ IFNULL(count(z1.userId),0) AS watchCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- #比对每个人应上的所有课程对应课时中,所有看过的记录
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- csb.USER_ID AS userId
|
|
|
|
|
+ t1.hourId AS hourId,
|
|
|
|
|
+ t1.courseId AS courseId,
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ csb.ID AS csbId
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ -- #先查出,每个人应该上的所有课程和对应课时
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
|
|
+ )t1
|
|
|
|
|
+ JOIN (SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ GROUP BY t1.courseId,t1.userId,t1.hourId,csb.ID
|
|
|
|
|
+ )z1
|
|
|
|
|
+ GROUP BY z1.courseId
|
|
|
|
|
+ )finalTwo ON ci.courseId =finalTwo.courseId
|
|
|
|
|
+ ORDER BY watchCount desc
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getCollegeList" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID as collegeId,
|
|
|
|
|
+ so.NAME as collegeIdName
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ WHERE so.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND so."CATEGORY" ='COLLEGE'
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getCourseCountListCollegeCourse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS collegeId,
|
|
|
|
|
+ IFNULL(finalOne.courseCount,0) AS courseCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT so.ID
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ WHERE so.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND so."CATEGORY" ='COLLEGE'
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ) so
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t1.orgId AS orgId,
|
|
|
|
|
+ count(t1.courseId) AS courseCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- so.ID AS orgId,
|
|
|
|
|
+ -- gr.grades_id AS gradesId,
|
|
|
|
|
+ -- ci.COURSE_ID AS courseId
|
|
|
|
|
+ so.ID AS orgId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ LEFT JOIN "grades" gr ON gr.college_id=so.ID AND gr.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON cop.GRADES_ID =gr.grades_id AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci ON cop.COURSE_ID =ci.COURSE_ID
|
|
|
|
|
+ WHERE so.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ AND gr.grades_id IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY so.ID,ci.COURSE_ID
|
|
|
|
|
+ )t1
|
|
|
|
|
+ GROUP BY t1.orgId
|
|
|
|
|
+ )finalOne ON so.ID =finalOne.orgId
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getWatchCountListCollegeCourse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS collegeId,
|
|
|
|
|
+ IFNULL(finalTwo.watchCount,0) AS watchCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT so.ID
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ WHERE so.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND so."CATEGORY" ='COLLEGE'
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ) so
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.orgId AS orgId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- csb.ID AS csbId,
|
|
|
|
|
+ -- csb.USER_ID AS csbUserId
|
|
|
|
|
+ t1.orgId AS orgId,
|
|
|
|
|
+ COUNT(csb.ID) AS watchCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ -- #先查出,每个人应该上的所有课程和对应课时,以及这些课程对应所属班级和对应院系(另外院系得以自身为维度,和开课班级之类的关联,统计的是对应课程的院系,而不是学生的院系)
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ z1.orgId AS orgId,
|
|
|
|
|
+ z1.gradesId AS gradesId,
|
|
|
|
|
+ z1.courseId AS courseId
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #查出每个院系对应每个班级以及对应课程,因为一个院系,可能会有多个班级,多个班级对应的多个开课,可能就会导致某个课程对于一个院系重复,所以需要提前分组
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS orgId,
|
|
|
|
|
+ gr.grades_id AS gradesId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ LEFT JOIN "grades" gr ON gr.college_id=so.ID AND gr.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON cop.GRADES_ID =gr.grades_id AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci ON cop.COURSE_ID =ci.COURSE_ID
|
|
|
|
|
+ WHERE so.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ AND gr.grades_id IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY so.ID,ci.COURSE_ID,gr.grades_id
|
|
|
|
|
+ )z1
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =z1.gradesId AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON z1.courseId =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'
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,z1.orgId,z1.gradesId,z1.courseId
|
|
|
|
|
+ )t1
|
|
|
|
|
+ JOIN (SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ GROUP BY t1.orgId
|
|
|
|
|
+ )finalTwo ON so.ID =finalTwo.orgId
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getCompleteRateListCollegeCourse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS collegeId,
|
|
|
|
|
+ IFNULL(finalThree.completeRate,0) AS completeRate
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT so.ID
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ WHERE so.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND so."CATEGORY" ='COLLEGE'
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ) so
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ tt2.orgId AS orgId,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ when tt2.allUserCount=0 or tt2.allUserCount is NULL OR tt2.completeWatchUserCount=0 OR tt2.completeWatchUserCount IS null then 0
|
|
|
|
|
+ else TRUNC(tt2.completeWatchUserCount * 1.0 / tt2.allUserCount, 2)
|
|
|
|
|
+ END AS completeRate
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- #这门专业,完成观看的人和应该观看的总人数(专业下,目前对应人员的对应课程,对应人员只要看过任何一门就算完成观看,如果未来要求全部完成才算完成观看,只需要finishRate=1即可)
|
|
|
|
|
+ tt1.orgId,
|
|
|
|
|
+ IFNULL(count( CASE WHEN tt1.finishRate>0 THEN 1 ELSE NULL END ),0) AS completeWatchUserCount,
|
|
|
|
|
+ IFNULL(count(tt1.userId),0) AS allUserCount
|
|
|
|
|
+ from(
|
|
|
|
|
+ -- #查询每个专业每个人完成率(每个人,应该上的课程,的完成率)
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ IFNULL(z1.alreadyCount,0) AS alreadyCount,
|
|
|
|
|
+ IFNULL(z2.allCount,0) AS allCount,
|
|
|
|
|
+ z2.orgId AS orgId,
|
|
|
|
|
+ z2.userId AS userId,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ when z2.allCount=0 or z2.allCount is NULL OR z1.alreadyCount=0 OR z1.alreadyCount IS null then 0
|
|
|
|
|
+ else TRUNC(z1.alreadyCount * 1.0 / z2.allCount, 2)
|
|
|
|
|
+ END AS finishRate
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #根据开课查询每个课程,每个人员,对应的课时总数量,最后按院系维度统计,院系每个人应该看的总数量
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t2.orgId,
|
|
|
|
|
+ t2.userId,
|
|
|
|
|
+ IFNULL(COUNT(t2.userId),0) AS allCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ z1.orgId AS orgId,
|
|
|
|
|
+ z1.gradesId AS gradesId,
|
|
|
|
|
+ z1.courseId AS courseId
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #查出每个院系对应每个班级以及对应课程,因为一个院系,可能会有多个班级,多个班级对应的多个开课,可能就会导致某个课程对于一个院系重复,所以需要提前分组
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS orgId,
|
|
|
|
|
+ gr.grades_id AS gradesId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ LEFT JOIN "grades" gr ON gr.college_id=so.ID AND gr.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON cop.GRADES_ID =gr.grades_id AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci ON cop.COURSE_ID =ci.COURSE_ID
|
|
|
|
|
+ WHERE so.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ AND gr.grades_id IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY so.ID,ci.COURSE_ID,gr.grades_id
|
|
|
|
|
+ )z1
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =z1.gradesId AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON z1.courseId =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'
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,z1.orgId,z1.gradesId,z1.courseId
|
|
|
|
|
+ )t2
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t2.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t2.orgId,t2.userId
|
|
|
|
|
+ )z2
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ -- #根据开课查询每个课程,对应的课时的对应人员,其中已经看完的部分,最后按院系维度统计,院系每个人已看完的数量
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t1.gradesId AS gradesId,
|
|
|
|
|
+ -- t1.orgId AS orgId,
|
|
|
|
|
+ -- t1.userId AS needWatchUserId,
|
|
|
|
|
+ -- csb.USER_ID AS alreadyWatchUserId
|
|
|
|
|
+ t1.orgId AS orgId,
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ IFNULL(COUNT(csb.USER_ID),0) AS alreadyCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ zz1.orgId AS orgId,
|
|
|
|
|
+ zz1.gradesId AS gradesId,
|
|
|
|
|
+ zz1.courseId AS courseId
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #查出每个院系对应每个班级以及对应课程,因为一个院系,可能会有多个班级,多个班级对应的多个开课,可能就会导致某个课程对于一个院系重复,所以需要提前分组
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS orgId,
|
|
|
|
|
+ gr.grades_id AS gradesId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ LEFT JOIN "grades" gr ON gr.college_id=so.ID AND gr.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON cop.GRADES_ID =gr.grades_id AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci ON cop.COURSE_ID =ci.COURSE_ID
|
|
|
|
|
+ WHERE so.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ AND gr.grades_id IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY so.ID,ci.COURSE_ID,gr.grades_id
|
|
|
|
|
+ )zz1
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =zz1.gradesId AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON zz1.courseId =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'
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,zz1.orgId,zz1.gradesId,zz1.courseId
|
|
|
|
|
+ )t1
|
|
|
|
|
+ JOIN (SELECT csb1.USER_ID,csb1.HOUR_ID FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1' GROUP BY csb1.USER_ID,csb1.HOUR_ID) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t1.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t1.orgId,t1.userId
|
|
|
|
|
+ )z1 ON z1.userId=z2.userId AND z1.orgId=z2.orgId
|
|
|
|
|
+ )tt1
|
|
|
|
|
+ GROUP BY tt1.orgId
|
|
|
|
|
+ )tt2
|
|
|
|
|
+ )finalThree ON so.ID =finalThree.orgId
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getHomeworkFinishRateCollegeCourse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS collegeId,
|
|
|
|
|
+ IFNULL(finalfour.homeworkFinishRate,0) AS homeworkFinishRate
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT so.ID
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ WHERE so.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND so."CATEGORY" ='COLLEGE'
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ ) so
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ tt1.orgId AS orgId,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ when tt1.allCount=0 or tt1.allCount is NULL OR tt1.alreadyCount=0 OR tt1.alreadyCount IS null then 0
|
|
|
|
|
+ else TRUNC(tt1.alreadyCount * 1.0 / tt1.allCount, 2)
|
|
|
|
|
+ END AS homeworkFinishRate
|
|
|
|
|
+ from(
|
|
|
|
|
+ -- #查询每个专业每个人完成率(每个人,应该上的课程,的完成率)
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ z2.orgId AS orgId,
|
|
|
|
|
+ IFNULL(count( CASE WHEN z2.tepaId IS NOT NULL THEN 1 ELSE NULL END ),0) AS alreadyCount,
|
|
|
|
|
+ IFNULL(count(z2.orgId),0) AS allCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #根据开课查询每个课程,每个人员,对应的课时总数量,最后按院系维度统计,院系每个人应该看的总数量
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t2.orgId AS orgId,
|
|
|
|
|
+ t2.hourId AS hourId,
|
|
|
|
|
+ t2.userId AS userId,
|
|
|
|
|
+ t2.tepId AS tepId,
|
|
|
|
|
+ tepa.id AS tepaId
|
|
|
|
|
+ -- IFNULL(COUNT(t2.userId),0) AS allCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ z1.orgId AS orgId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ tep.id AS tepId
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #查出每个院系对应每个班级以及对应课程,因为一个院系,可能会有多个班级,多个班级对应的多个开课,可能就会导致某个课程对于一个院系重复,所以需要提前分组
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ so.ID AS orgId,
|
|
|
|
|
+ gr.grades_id AS gradesId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ FROM SYS_ORG so
|
|
|
|
|
+ LEFT JOIN "grades" gr ON gr.college_id=so.ID AND gr.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON cop.GRADES_ID =gr.grades_id AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci ON cop.COURSE_ID =ci.COURSE_ID
|
|
|
|
|
+ WHERE so.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ AND gr.grades_id IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ <if test="collegeIdList !=null and collegeIdList.size()>0">
|
|
|
|
|
+ and so.ID in
|
|
|
|
|
+ <foreach collection=" collegeIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY so.ID,ci.COURSE_ID,gr.grades_id
|
|
|
|
|
+ )z1
|
|
|
|
|
+ LEFT JOIN SYS_USER stu ON stu.GRADES_ID =z1.gradesId AND stu.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc ON z1.courseId =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'
|
|
|
|
|
+ JOIN COURSE_RELATE cr ON cr.MAIN_ID =cch.ID AND cr.FUNC_TYPE ='4' AND cr.INFO_TYPE ='0' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ JOIN "t_exam_paper" tep ON tep.id=cr.RELATE_ID AND tep.deleted='0'
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ GROUP BY stu.ID,z1.orgId,z1.gradesId,cch.ID,tep.id
|
|
|
|
|
+ )t2
|
|
|
|
|
+ -- #直接查询考试答卷表,查询该人员该试卷是否有对应答案
|
|
|
|
|
+ LEFT JOIN t_exam_paper_answer tepa ON tepa.create_user=t2.userId AND tepa.exam_paper_id=t2.tepId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t2.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t2.orgId,t2.hourId,t2.userId,t2.tepId,tepa.id
|
|
|
|
|
+ )z2
|
|
|
|
|
+ GROUP BY z2.orgId
|
|
|
|
|
+ )tt1
|
|
|
|
|
+ )finalFour ON so.ID =finalFour.orgId
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getUserList" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ su.ID AS userId,
|
|
|
|
|
+ IFNULL(su.NAME,'') AS userIdName,
|
|
|
|
|
+ IFNULL(su.STUDENT_NUM,'') AS studentNum,
|
|
|
|
|
+ IFNULL(su.ORG_ID,'') AS orgId,
|
|
|
|
|
+ IFNULL(so.NAME,'') AS orgIdName,
|
|
|
|
|
+ IFNULL(su.MAJOR_ID,'') AS majorId,
|
|
|
|
|
+ IFNULL(ma."major_name",'') AS majorIdName,
|
|
|
|
|
+ IFNULL(su.GRADES_ID,'') AS gradesId,
|
|
|
|
|
+ IFNULL(gr."grades_name",'') AS gradesIdName,
|
|
|
|
|
+ IFNULL(finalThree.finishRate,0) AS finishRate
|
|
|
|
|
+ FROM SYS_USER su
|
|
|
|
|
+ LEFT JOIN SYS_ORG so ON su.ORG_ID = so.ID AND so.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN "major" ma ON su.MAJOR_ID = ma."id" AND ma.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN "grades" gr ON su.GRADES_ID = gr."grades_id" AND gr.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- z1.courseId AS courseId,
|
|
|
|
|
+ -- z1.alreadyCount AS alreadyCount,
|
|
|
|
|
+ -- z2.allCount AS allCount
|
|
|
|
|
+ z2.userId AS userId,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ when z2.allCount=0 or z2.allCount is NULL OR z1.alreadyCount=0 OR z1.alreadyCount IS null then 0
|
|
|
|
|
+ else TRUNC(z1.alreadyCount * 1.0 / z2.allCount, 2)
|
|
|
|
|
+ END AS finishRate
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t2.userId,
|
|
|
|
|
+ IFNULL(COUNT(t2.hourId AS hourId),0) AS allCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cop.ID AS copId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId,
|
|
|
|
|
+ stu.ID AS userId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ )t2
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t2.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t2.userId
|
|
|
|
|
+ )z2
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- csb.USER_ID AS userId
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ IFNULL(COUNT(csb.HOUR_ID AS hourId),0) AS alreadyCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ )t1
|
|
|
|
|
+ LEFT JOIN (SELECT csb1.USER_ID,csb1.HOUR_ID FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1' GROUP BY csb1.USER_ID,csb1.HOUR_ID) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t1.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t1.userId
|
|
|
|
|
+ )z1 ON z1.userId=z2.userId
|
|
|
|
|
+ )finalThree ON su.ID =finalThree.userId
|
|
|
|
|
+ WHERE su.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND su.EDU_IDENTITY ='2'
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getCourseListStudentAnalyse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ su.ID AS userId,
|
|
|
|
|
+ ci1.COURSE_ID AS courseId,
|
|
|
|
|
+ IFNULL(ci1.COURSE_NAME,'') AS courseName
|
|
|
|
|
+ FROM (SELECT su1.ID,su1.NAME,su1.GRADES_ID FROM SYS_USER su1 WHERE su1.DELETE_FLAG='NOT_DELETE' AND su1.EDU_IDENTITY='2')su
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON su.GRADES_ID=cop.GRADES_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci1 ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ WHERE ci1.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ GROUP BY su.ID,ci1.COURSE_ID,ci1.COURSE_NAME
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getFinishRateListStudentAnalyse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ userCourse.userId AS userId,
|
|
|
|
|
+ userCourse.courseId AS courseId,
|
|
|
|
|
+ IFNULL(finalOne.finishRate,0) AS finishRate
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT su.ID AS userId,ci1.COURSE_ID AS courseId, IFNULL(ci1.COURSE_NAME,'') AS courseName
|
|
|
|
|
+ FROM (SELECT su1.ID,su1.NAME,su1.GRADES_ID FROM SYS_USER su1 WHERE su1.DELETE_FLAG='NOT_DELETE' AND su1.EDU_IDENTITY='2')su
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON su.GRADES_ID=cop.GRADES_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci1 ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ WHERE ci1.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and su.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci1.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY su.ID,ci1.COURSE_ID,ci1.COURSE_NAME
|
|
|
|
|
+ )userCourse
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ IFNULL(z1.alreadyCount,0) AS alreadyCount,
|
|
|
|
|
+ IFNULL(z2.allCount,0) AS allCount,
|
|
|
|
|
+ z2.courseId AS courseId,
|
|
|
|
|
+ z2.userId AS userId,
|
|
|
|
|
+ CASE
|
|
|
|
|
+ when z2.allCount=0 or z2.allCount is NULL OR z1.alreadyCount=0 OR z1.alreadyCount IS null then 0
|
|
|
|
|
+ else TRUNC(z1.alreadyCount * 1.0 / z2.allCount, 2)
|
|
|
|
|
+ END AS finishRate
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #根据开课查询每个课程,每个人员,对应的课时总数量
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t2.courseId,
|
|
|
|
|
+ t2.userId,
|
|
|
|
|
+ IFNULL(COUNT(t2.userId),0) AS allCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- cop.ID AS copId,
|
|
|
|
|
+ -- cop.GRADES_ID AS gradesId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId,
|
|
|
|
|
+ stu.ID AS userId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and stu.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY cch.ID,cc.ID,ci.COURSE_ID,stu.ID
|
|
|
|
|
+ )t2
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t2.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t2.courseId,t2.userId
|
|
|
|
|
+ )z2
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ -- #根据开课查询每个课程,对应的课时的对应人员,其中已经看完的部分
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t1.userId AS needWatchUserId,
|
|
|
|
|
+ -- csb.USER_ID AS alreadyWatchUserId
|
|
|
|
|
+ t1.courseId AS courseId,
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ IFNULL(COUNT(csb.USER_ID AS hourId),0) AS alreadyCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and stu.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ )t1
|
|
|
|
|
+ JOIN (SELECT csb1.USER_ID,csb1.HOUR_ID FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1' GROUP BY csb1.USER_ID,csb1.HOUR_ID) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t1.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t1.courseId,t1.userId
|
|
|
|
|
+ )z1 ON z1.userId=z2.userId AND z1.courseId=z2.courseId
|
|
|
|
|
+ )finalOne ON finalOne.userId=userCourse.userId AND finalOne.courseId=userCourse.courseId
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getWorkCountListStudentAnalyse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ userCourse.userId AS userId,
|
|
|
|
|
+ userCourse.courseId AS courseId,
|
|
|
|
|
+ IFNULL(finalTwo.workRate,'0/0') AS workRate
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT su.ID AS userId,ci1.COURSE_ID AS courseId, IFNULL(ci1.COURSE_NAME,'') AS courseName
|
|
|
|
|
+ FROM (SELECT su1.ID,su1.NAME,su1.GRADES_ID FROM SYS_USER su1 WHERE su1.DELETE_FLAG='NOT_DELETE' AND su1.EDU_IDENTITY='2')su
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON su.GRADES_ID=cop.GRADES_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci1 ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ WHERE ci1.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and su.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci1.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY su.ID,ci1.COURSE_ID,ci1.COURSE_NAME
|
|
|
|
|
+ )userCourse
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ tt1.courseId AS courseId,
|
|
|
|
|
+ tt1.userId AS userId,
|
|
|
|
|
+ tt1.alreadyWorkCount || '/' ||
|
|
|
|
|
+ tt1.allWorkount AS workRate
|
|
|
|
|
+ from(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ z2.courseId AS courseId,
|
|
|
|
|
+ z2.userId AS userId,
|
|
|
|
|
+ IFNULL(count( CASE WHEN z2.tepaId IS NOT NULL THEN 1 ELSE NULL END ),0) AS alreadyWorkCount,
|
|
|
|
|
+ IFNULL(count(z2.tepId),0) AS allWorkount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ -- #根据开课查询每个课程,每个人员,对应的课时,下的卷子的总数量
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ t2.hourId AS hourId,
|
|
|
|
|
+ t2.courseId AS courseId,
|
|
|
|
|
+ t2.userId AS userId,
|
|
|
|
|
+ t2.tepId AS tepId,
|
|
|
|
|
+ tepa.id AS tepaId
|
|
|
|
|
+ -- IFNULL(COUNT(t2.userId),0) AS allCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId,
|
|
|
|
|
+ tep.id AS tepId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ JOIN COURSE_RELATE cr ON cr.MAIN_ID =cch.ID AND cr.FUNC_TYPE ='4' AND cr.INFO_TYPE ='0' AND cr.CHAPTERHOUR_TYPE ='1' AND cr.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ JOIN "t_exam_paper" tep ON tep.id=cr.RELATE_ID AND tep.deleted='0'
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ 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
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and stu.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,ci.COURSE_ID,tep.id
|
|
|
|
|
+ )t2
|
|
|
|
|
+ -- #直接查询考试答卷表,查询该人员该试卷是否有对应答案
|
|
|
|
|
+ LEFT JOIN t_exam_paper_answer tepa ON tepa.create_user=t2.userId AND tepa.exam_paper_id=t2.tepId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ -- AND t2.courseId='1954728193252552705'
|
|
|
|
|
+ GROUP BY t2.hourId,t2.courseId,t2.userId,t2.tepId,tepa.id
|
|
|
|
|
+ )z2
|
|
|
|
|
+ GROUP BY z2.courseId,z2.userId
|
|
|
|
|
+ )tt1
|
|
|
|
|
+ )finalTwo ON finalTwo.userId=userCourse.userId AND finalTwo.courseId=userCourse.courseId
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getPostCountListStudentAnalyse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ userCourse.userId AS userId,
|
|
|
|
|
+ userCourse.courseId AS courseId,
|
|
|
|
|
+ IFNULL(finalThree.postCount,0) AS postCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT su.ID AS userId,ci1.COURSE_ID AS courseId, IFNULL(ci1.COURSE_NAME,'') AS courseName
|
|
|
|
|
+ FROM (SELECT su1.ID,su1.NAME,su1.GRADES_ID FROM SYS_USER su1 WHERE su1.DELETE_FLAG='NOT_DELETE' AND su1.EDU_IDENTITY='2')su
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON su.GRADES_ID=cop.GRADES_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci1 ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ WHERE ci1.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and su.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci1.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY su.ID,ci1.COURSE_ID,ci1.COURSE_NAME
|
|
|
|
|
+ )userCourse
|
|
|
|
|
+ LEFT join(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.userId AS userId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t2.replyId AS replyId
|
|
|
|
|
+ t1.courseId AS courseId,
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ IFNULL(count(t2.replyId),0) postCount
|
|
|
|
|
+ from(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE ci.DELETE_FLAG ='NOT_DELETE'
|
|
|
|
|
+ AND cc.ID IS NOT NULL
|
|
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and stu.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY stu.ID,cc.ID,ci.COURSE_ID
|
|
|
|
|
+ )t1
|
|
|
|
|
+ JOIN (
|
|
|
|
|
+ select
|
|
|
|
|
+ reply.REPLY_ID AS replyId,
|
|
|
|
|
+ reply.USER_ID AS userId,
|
|
|
|
|
+ chapter.DISCUSSION_ID AS discussionId,
|
|
|
|
|
+ chapter.CHAPTER_ID AS chapterId
|
|
|
|
|
+ from FORUM_POST_REPLY as reply
|
|
|
|
|
+ left join FORUM_CHAPTER_DISCUSSION as chapter on reply.POST_ID = chapter.POST_ID
|
|
|
|
|
+ where
|
|
|
|
|
+ reply.POST_TYPE = 3
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and reply.USER_ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ )t2 ON t1.chapterId=t2.chapterId AND t1.userId=t2.userId
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ GROUP BY t1.courseId,t1.userId
|
|
|
|
|
+ )finalThree ON finalThree.userId=userCourse.userId AND finalThree.courseId=userCourse.courseId
|
|
|
|
|
+ </select>
|
|
|
|
|
+ <select id="getAnswerCountListStudentAnalyse" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ userCourse.userId AS userId,
|
|
|
|
|
+ userCourse.courseId AS courseId,
|
|
|
|
|
+ IFNULL(finalFour.answerCount,0) AS answerCount
|
|
|
|
|
+ FROM(
|
|
|
|
|
+ SELECT su.ID AS userId,ci1.COURSE_ID AS courseId, IFNULL(ci1.COURSE_NAME,'') AS courseName
|
|
|
|
|
+ FROM (SELECT su1.ID,su1.NAME,su1.GRADES_ID FROM SYS_USER su1 WHERE su1.DELETE_FLAG='NOT_DELETE' AND su1.EDU_IDENTITY='2')su
|
|
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON su.GRADES_ID=cop.GRADES_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ LEFT JOIN COURSE_INFO ci1 ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ WHERE ci1.DELETE_FLAG='NOT_DELETE'
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and su.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="courseIdList !=null and courseIdList.size()>0">
|
|
|
|
|
+ and ci1.COURSE_ID in
|
|
|
|
|
+ <foreach collection=" courseIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY su.ID,ci1.COURSE_ID,ci1.COURSE_NAME
|
|
|
|
|
+ )userCourse
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
|
|
+ -- t2.userId AS userId,
|
|
|
|
|
+ -- t2.cqaId AS cqaId
|
|
|
|
|
+ t1.userId AS userId,
|
|
|
|
|
+ t1.courseId AS courseId,
|
|
|
|
|
+ COUNT(t2.cqaId) answerCount
|
|
|
|
|
+ FROM (
|
|
|
|
|
+ SELECT
|
|
|
|
|
+-- cop.ID AS copId,
|
|
|
|
|
+ stu.ID AS userId,
|
|
|
|
|
+ cch.ID AS hourId,
|
|
|
|
|
+ cc.ID AS chapterId,
|
|
|
|
|
+ ci.COURSE_ID AS courseId
|
|
|
|
|
+ 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'
|
|
|
|
|
+ WHERE 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
|
|
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
|
|
+ and stu.ID in
|
|
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
|
|
+ #{item}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ GROUP BY cch.ID,cc.ID,ci.COURSE_ID,stu.ID
|
|
|
|
|
+ )t1
|
|
|
|
|
+ LEFT JOIN(
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ cqa.ID AS cqaId,
|
|
|
|
|
+ cr.ID AS crId,
|
|
|
|
|
+ cr.MAIN_ID AS hourId,
|
|
|
|
|
+ cqa.USER_ID AS userId
|
|
|
|
|
+ FROM (SELECT cqa1.* FROM COURSE_QUESTION_ANSWER cqa1 WHERE cqa1.DELETE_FLAG ='NOT_DELETE' AND cqa1.PID IS null) cqa
|
|
|
|
|
+ JOIN COURSE_RELATE cr ON cqa.ID=cr.RELATE_ID AND cr.DELETE_FLAG ='NOT_DELETE' and cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='1' AND FUNC_TYPE ='7'
|
|
|
|
|
+ WHERE 1=1
|
|
|
|
|
+ )t2 ON t1.hourId=t2.hourId AND t1.userId=t2.userId
|
|
|
|
|
+ GROUP BY t1.userId,t1.courseId
|
|
|
|
|
+ )finalFour ON finalFour.userId=userCourse.userId AND finalFour.courseId=userCourse.courseId
|
|
|
|
|
+ </select>
|
|
|
|
|
+</mapper>
|