|
|
@@ -0,0 +1,1816 @@
|
|
|
+<?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.VideoAnalysisProgressMapper">
|
|
|
+
|
|
|
+ <select id="getAlreadyWatchUserCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ IFNULL(count(z1.userId),0) AS alreadyWatchUserCount
|
|
|
+ from(
|
|
|
+ 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 stu.EDU_IDENTITY='2'
|
|
|
+ -- 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
|
|
|
+ WHERE z1.alreadyCount>0
|
|
|
+ </select>
|
|
|
+ <select id="getCompleteWatchUserCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- tt1.userId
|
|
|
+ count(tt1.userId) AS completeWatchUserCount
|
|
|
+ from(
|
|
|
+ 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
|
|
|
+ )tt1
|
|
|
+ WHERE tt1.finishRate>0
|
|
|
+ </select>
|
|
|
+ <select id="getCompleteRate" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ CASE
|
|
|
+ when zz1.allUserCount=0 or zz1.allUserCount is NULL OR zz1.alreadyWatchUserCount=0 OR zz1.alreadyWatchUserCount IS null then 0
|
|
|
+ else TRUNC(zz1.alreadyWatchUserCount * 1.0 / zz1.allUserCount, 2)
|
|
|
+ END AS completeRate
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ (
|
|
|
+ SELECT count(su.ID)
|
|
|
+ FROM SYS_USER su
|
|
|
+ WHERE su.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND su.EDU_IDENTITY='2'
|
|
|
+ ) AS allUserCount,
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ count(tt1.userId)
|
|
|
+ FROM (
|
|
|
+ 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
|
|
|
+ AND stu.EDU_IDENTITY='2'
|
|
|
+ )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 stu.EDU_IDENTITY='2'
|
|
|
+ -- 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
|
|
|
+ )tt1
|
|
|
+ WHERE tt1.finishRate>0
|
|
|
+ ) AS alreadyWatchUserCount
|
|
|
+ FROM DUAL
|
|
|
+ )zz1
|
|
|
+ </select>
|
|
|
+ <select id="getAllDownloadCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+-- t1.hourId AS hourId,
|
|
|
+-- t1.chapterId AS chapterId,
|
|
|
+-- csb.USER_ID AS userId
|
|
|
+ IFNULL(COUNT(csb.HOUR_ID AS hourId),0) as allDownloadCount
|
|
|
+ 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='2' AND csb1.TYPE='2') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getDownloadRate" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ CASE
|
|
|
+ when zz1.downLoadCount=0 or zz1.downLoadCount is NULL OR zz1.allCount=0 OR zz1.allCount IS null then 0
|
|
|
+ else TRUNC(zz1.downLoadCount * 1.0 / zz1.allCount, 2)
|
|
|
+ END AS rate
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ IFNULL(COUNT(t2.hourId AS hourId),0)
|
|
|
+ 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'
|
|
|
+ ) AS allCount,
|
|
|
+ (
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- csb.USER_ID AS userId
|
|
|
+ IFNULL(COUNT(csb.HOUR_ID AS hourId),0)
|
|
|
+ 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='2' AND csb1.TYPE='2' 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'
|
|
|
+ )AS downLoadCount
|
|
|
+ FROM DUAL
|
|
|
+ )zz1
|
|
|
+ </select>
|
|
|
+ <select id="getAvgDownloadCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ IFNULL(ROUND(AVG(z1.downloadCount), 2),0) avgDownloadCount
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId
|
|
|
+ t1.userId AS userId,
|
|
|
+ COUNT(t1.hourId) AS downloadCount
|
|
|
+ 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='2' AND csb1.TYPE='2') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.userId
|
|
|
+ )z1
|
|
|
+ </select>
|
|
|
+ <select id="getJumpOutCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.PROGRESS AS progress
|
|
|
+ IFNULL(count(csb.ID),0) AS jumpOutCount
|
|
|
+ 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.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.PROGRESS FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1' AND csb1.PROGRESS < 100) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getJumpOutRate" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ CASE
|
|
|
+ when z1.jumpOutCount=0 or z1.jumpOutCount is NULL OR z1.allCount=0 OR z1.allCount IS null then 0
|
|
|
+ else TRUNC(z1.jumpOutCount * 1.0 / z1.allCount, 2)
|
|
|
+ END AS jumpOutRate
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.PROGRESS AS progress
|
|
|
+ count(CASE WHEN csb.PROGRESS < 100 THEN 1 END) AS jumpOutCount,
|
|
|
+ count(csb.ID) 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
|
|
|
+ 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.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.PROGRESS 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
|
|
|
+ )z1
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getJumpAvgTime" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- LPAD(FLOOR(csb1.END_TIME / 3600000), 2, '0') || ':' ||
|
|
|
+ -- LPAD(FLOOR((csb1.END_TIME % 3600000) / 60000), 2, '0') || ':' ||
|
|
|
+ -- LPAD(FLOOR((csb1.END_TIME % 60000) / 1000), 2, '0') AS jumpTime
|
|
|
+ ROUND(AVG(IFNULL(csb.END_TIME,0)), 2) AS jumpAvgTime
|
|
|
+ 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.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.END_TIME FROM COURSE_STUDENT_BURIALPOINT csb1 WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1' AND csb1.PROGRESS < 100) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getNoteCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- cr.ID AS crId,
|
|
|
+ -- cr.FUNC_TYPE AS crFuncType
|
|
|
+ count(cr.ID) noteCount
|
|
|
+ from(
|
|
|
+ SELECT
|
|
|
+ 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 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
|
|
|
+ GROUP BY cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN COURSE_RELATE cr ON t1.hourId=cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' and cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='1' AND FUNC_TYPE ='6'
|
|
|
+ </select>
|
|
|
+ <select id="getPostCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ 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
|
|
|
+ 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
|
|
|
+ --AND reply.CREATE_TIME > = TRUNC(SYSDATE) -6
|
|
|
+ --AND reply.CREATE_TIME < TRUNC(SYSDATE) + 1
|
|
|
+ --AND chapter.COURSE_ID = '1946462050075185153'
|
|
|
+ --AND reply.USER_ID = '1948586504800468993'
|
|
|
+ )t2 ON t1.chapterId=t2.chapterId AND t1.userId=t2.userId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+ <select id="getReplyCount" resultType="java.lang.String">
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ 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
|
|
|
+ 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
|
|
|
+ AND reply.PARENT_ID != '-1'
|
|
|
+ --AND reply.CREATE_TIME >= TRUNC(SYSDATE) -6
|
|
|
+ --AND reply.CREATE_TIME < TRUNC(SYSDATE) + 1
|
|
|
+ --AND chapter.COURSE_ID = '1946462050075185153'
|
|
|
+ --AND reply.USER_ID = '1948586504800468993'
|
|
|
+ )t2 ON t1.chapterId=t2.chapterId AND t1.userId=t2.userId
|
|
|
+ WHERE 1=1
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getUserList" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(su.NAME,'') AS stuName,
|
|
|
+ IFNULL(su.LAST_LOGIN_TIME,'') AS lastLoginTime
|
|
|
+ FROM (SELECT su1.* FROM SYS_USER su1 WHERE su1.DELETE_FLAG='NOT_DELETE' AND su1.EDU_IDENTITY='2' ) su
|
|
|
+ </select>
|
|
|
+ <select id="getWatchTimeAndCountStudyBehavior" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(finalOne.allStayTime,0) AS allStayTime,
|
|
|
+ IFNULL(finalOne.watchCount,0) AS watchCount
|
|
|
+ FROM (
|
|
|
+ SELECT su1.* FROM SYS_USER su1
|
|
|
+ WHERE su1.DELETE_FLAG='NOT_DELETE'
|
|
|
+ AND su1.EDU_IDENTITY='2'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and su1.ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) su
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ z1.userId AS userId,
|
|
|
+ z1.watchCount AS watchCount,
|
|
|
+ LPAD(FLOOR(z1.allStayTime / 3600000), 5, '0') || '小时' ||
|
|
|
+ LPAD(FLOOR((z1.allStayTime % 3600000) / 60000), 2, '0') || '分钟' AS allStayTime
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- #获取每个人课程每次课时停留时长,用来计算访问时长
|
|
|
+ t1.userId AS userId,
|
|
|
+ IFNULL(COUNT(csbVideo.ID),0) AS watchCount,
|
|
|
+ IFNULL(SUM(csbVideo.STAY_TIME),0) AS allStayTime
|
|
|
+ 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
|
|
|
+ <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 stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT csb1.ID,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'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and csb1.USER_ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) csbVideo ON csbVideo.HOUR_ID =t1.hourId AND csbVideo.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.userId
|
|
|
+ )z1
|
|
|
+ )finalOne ON su.ID =finalOne.userId
|
|
|
+ </select>
|
|
|
+ <select id="getQuickOperaCountListStudyBehavior" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(finalTwo.quickOperaCount,0) AS quickOperaCount
|
|
|
+ FROM (
|
|
|
+ SELECT su1.* FROM SYS_USER su1
|
|
|
+ WHERE su1.DELETE_FLAG='NOT_DELETE'
|
|
|
+ AND su1.EDU_IDENTITY='2'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and su1.ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) su
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- #获取每个人课程课时所有快进快退记录总数量
|
|
|
+ t1.userId AS userId,
|
|
|
+ IFNULL(COUNT(csbQuickOpera.ID),0) AS quickOperaCount
|
|
|
+ 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
|
|
|
+ <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 stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.TYPE FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND (csb1.TYPE='3' OR csb1.TYPE='4')
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and csb1.USER_ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) csbQuickOpera ON csbQuickOpera.HOUR_ID =t1.hourId AND csbQuickOpera.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.userId
|
|
|
+ )finalTwo ON su.ID =finalTwo.userId
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="getFinishRateListStudyBehavior" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(finalThree.finishRate,0) AS finishRate
|
|
|
+ FROM (
|
|
|
+ SELECT su1.* FROM SYS_USER su1
|
|
|
+ WHERE su1.DELETE_FLAG='NOT_DELETE'
|
|
|
+ AND su1.EDU_IDENTITY='2'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and su1.ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) su
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ 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
|
|
|
+ <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>
|
|
|
+ )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
|
|
|
+ <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>
|
|
|
+ -- 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'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and csb1.USER_ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ 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
|
|
|
+ </select>
|
|
|
+ <select id="getNoteCountListStudyBehavior" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(finalFour.noteCount,0) AS noteCount
|
|
|
+ FROM (
|
|
|
+ SELECT su1.* FROM SYS_USER su1
|
|
|
+ WHERE su1.DELETE_FLAG='NOT_DELETE'
|
|
|
+ AND su1.EDU_IDENTITY='2'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and su1.ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) su
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ t1.userId AS userId,
|
|
|
+ count(cr.ID) noteCount
|
|
|
+ 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
|
|
|
+ <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 stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN COURSE_RELATE cr ON t1.hourId=cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' and cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='1' AND FUNC_TYPE ='6'
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.userId
|
|
|
+ )finalFour ON su.ID =finalFour.userId
|
|
|
+ </select>
|
|
|
+ <select id="getJumpTimeContactListStudyBehavior" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(finalFive.jumpTimeContact,0) AS jumpTimeContact
|
|
|
+ FROM (
|
|
|
+ SELECT su1.* FROM SYS_USER su1
|
|
|
+ WHERE su1.DELETE_FLAG='NOT_DELETE'
|
|
|
+ AND su1.EDU_IDENTITY='2'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and su1.ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) su
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- z1.userId,
|
|
|
+ -- z1.jumpTime,
|
|
|
+ -- z1.thisJumpTimeCount,
|
|
|
+ -- z1.rn
|
|
|
+ z1.userId,
|
|
|
+ LISTAGG(z1.jumpTime, ',') WITHIN GROUP (ORDER BY z1.rn) AS jumpTimeContact
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- csb.USER_ID AS userId,
|
|
|
+ -- t1.hourId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.jumpTime AS jumpTime
|
|
|
+ csb.USER_ID AS userId,
|
|
|
+ csb.jumpTime AS jumpTime,
|
|
|
+ COUNT(csb.jumpTime) AS thisJumpTimeCount,
|
|
|
+ ROW_NUMBER() OVER (
|
|
|
+ PARTITION BY csb.USER_ID -- 请替换为你的分组字段,例如 user_id
|
|
|
+ ORDER BY COUNT(csb.jumpTime) DESC -- 请替换为你的排序字段,并按需指定排序方式(ASC升序或DESC降序)
|
|
|
+ ) AS rn
|
|
|
+ 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
|
|
|
+ <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>
|
|
|
+ -- AND csb.USER_ID='1948586504800468993'
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN (
|
|
|
+ -- #查询每个人跳出时间,分组一下,只显示前五频率的跳出时间
|
|
|
+ SELECT
|
|
|
+ csb1.ID,
|
|
|
+ csb1.USER_ID,
|
|
|
+ csb1.HOUR_ID,
|
|
|
+ LPAD(FLOOR(csb1.END_TIME / 3600000), 2, '0') || ':' ||
|
|
|
+ LPAD(FLOOR((csb1.END_TIME % 3600000) / 60000), 2, '0') || ':' ||
|
|
|
+ LPAD(FLOOR((csb1.END_TIME % 60000) / 1000), 2, '0') AS jumpTime
|
|
|
+ FROM COURSE_STUDENT_BURIALPOINT csb1
|
|
|
+ WHERE csb1.DELETE_FLAG ='NOT_DELETE' AND csb1.FUNC_TYPE='1' AND csb1.TYPE='1' AND csb1.PROGRESS < 100
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and csb1.USER_ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY csb.jumpTime,csb.USER_ID
|
|
|
+ ORDER BY thisJumpTimeCount desc
|
|
|
+ )z1
|
|
|
+ WHERE z1.rn < =5
|
|
|
+ GROUP BY z1.userId
|
|
|
+ )finalFive ON su.ID =finalFive.userId
|
|
|
+ </select>
|
|
|
+ <select id="getPostCountListStudyBehavior" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(finalSix.postCount,0) AS postCount
|
|
|
+ FROM (
|
|
|
+ SELECT su1.* FROM SYS_USER su1
|
|
|
+ WHERE su1.DELETE_FLAG='NOT_DELETE'
|
|
|
+ AND su1.EDU_IDENTITY='2'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and su1.ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) su
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ count(0) as postCount
|
|
|
+ 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>
|
|
|
+ GROUP BY reply.USER_ID
|
|
|
+ )finalSix ON su.ID =finalSix.userId
|
|
|
+ </select>
|
|
|
+ <select id="getReplyCountListStudyBehavior" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ su.ID AS userId,
|
|
|
+ IFNULL(finalSeven.replyCount,0) AS replyCount
|
|
|
+ FROM (
|
|
|
+ SELECT su1.* FROM SYS_USER su1
|
|
|
+ WHERE su1.DELETE_FLAG='NOT_DELETE'
|
|
|
+ AND su1.EDU_IDENTITY='2'
|
|
|
+ <if test="userIdList !=null and userIdList.size()>0">
|
|
|
+ and su1.ID in
|
|
|
+ <foreach collection=" userIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ ) su
|
|
|
+ LEFT join(
|
|
|
+ SELECT
|
|
|
+ reply.USER_ID AS userId,
|
|
|
+ count(0)as replyCount
|
|
|
+ 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
|
|
|
+ AND reply.PARENT_ID != '-1'
|
|
|
+ <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>
|
|
|
+ GROUP BY reply.USER_ID
|
|
|
+ )finalSeven ON su.ID =finalSeven.userId
|
|
|
+ </select>
|
|
|
+ <select id="getHourList" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ classhour.hourIdName AS hourIdName,
|
|
|
+ classhour.chapterId AS chapterId,
|
|
|
+ classhour.chapterIdName AS chapterIdName,
|
|
|
+ classhour.courseId AS courseId,
|
|
|
+ classhour.courseIdName AS courseIdName
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ cch.NAME AS hourIdName,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ cc.NAME AS chapterIdName,
|
|
|
+ basis.courseId AS courseId,
|
|
|
+ ci.COURSE_NAME AS courseIdName
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ JOIN COURSE_INFO ci ON ci.COURSE_ID =basis.courseId
|
|
|
+ JOIN COURSE_CHAPTER cc ON cc.ID = basis.chapterId
|
|
|
+ JOIN COURSE_CLASSHOUR cch ON cch.ID = basis.hourId
|
|
|
+ )classhour
|
|
|
+ </select>
|
|
|
+ <select id="getAllStayTimeListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalOne.allStayTime,'') AS allStayTime
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ z1.hourId AS hourId,
|
|
|
+ LPAD(FLOOR(z1.allStayTime / 3600000), 5, '0') || ':' ||
|
|
|
+ LPAD(FLOOR((z1.allStayTime % 3600000) / 60000), 2, '0') || ':' ||
|
|
|
+ LPAD(FLOOR((z1.allStayTime % 60000) / 1000), 2, '0') AS allStayTime
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- #获取每个课程每人每次课时停留时长,用来计算课程的访问时长
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.USER_ID AS userId,
|
|
|
+ -- csb.STAY_TIME AS stayTime
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(SUM(csb.STAY_TIME),0) AS allStayTime
|
|
|
+ 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
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ LEFT JOIN (SELECT csb1.ID,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
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )z1
|
|
|
+ )finalOne ON classhour.hourId =finalOne.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getWatchUserCountListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalTwo.watchUserCount,0) AS watchUserCount
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ z1.hourId AS hourId,
|
|
|
+ IFNULL(count(z1.userId),0) AS watchUserCount
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ -- #获取每个课程每人每次课时停留时长,用来计算课程的访问时长
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- csb.USER_ID AS userId
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ csb.USER_ID AS userId
|
|
|
+ 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
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )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
|
|
|
+ GROUP BY t1.hourId,csb.USER_ID
|
|
|
+ )z1
|
|
|
+ GROUP BY z1.hourId
|
|
|
+ )finalTwo ON classhour.hourId =finalTwo.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getCompleteWatchUserCountListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalThree.completeWatchUserCount,0) AS completeWatchUserCount
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ tt1.hourId,
|
|
|
+ IFNULL(count(tt1.userId),0) AS completeWatchUserCount
|
|
|
+ from(
|
|
|
+ -- #查询每个课时每个人完成率
|
|
|
+ SELECT
|
|
|
+ IFNULL(z1.alreadyCount,0) AS alreadyCount,
|
|
|
+ IFNULL(z2.allCount,0) AS allCount,
|
|
|
+ z2.hourId AS hourId,
|
|
|
+ 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.hourId,
|
|
|
+ t2.userId,
|
|
|
+ IFNULL(COUNT(t2.userId),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
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ )t2
|
|
|
+ WHERE 1=1
|
|
|
+ -- AND t2.courseId='1954728193252552705'
|
|
|
+ GROUP BY t2.hourId,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.hourId AS hourId,
|
|
|
+ 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
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ -- 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' 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.hourId,t1.userId
|
|
|
+ )z1 ON z1.userId=z2.userId AND z1.hourId=z2.hourId
|
|
|
+ )tt1
|
|
|
+ --#最后查出每个课时每个人完成率,统计那门课时完成率达标的人
|
|
|
+ WHERE tt1.finishRate>0
|
|
|
+ GROUP BY tt1.hourId
|
|
|
+ )finalThree ON classhour.hourId =finalThree.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getCompleteRateListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalFour.completeRate,0) AS completeRate
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ tt2.hourId AS hourId,
|
|
|
+ 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
|
|
|
+ -- #这门课时,完成观看的人和应该观看的总人数
|
|
|
+ tt1.hourId,
|
|
|
+ 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.hourId AS hourId,
|
|
|
+ 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.hourId,
|
|
|
+ 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="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ )t2
|
|
|
+ WHERE 1=1
|
|
|
+ -- AND t2.courseId='1954728193252552705'
|
|
|
+ GROUP BY t2.hourId,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.hourId AS hourId,
|
|
|
+ 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="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" 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.hourId,t1.userId
|
|
|
+ )z1 ON z1.userId=z2.userId AND z1.hourId=z2.hourId
|
|
|
+ )tt1
|
|
|
+ GROUP BY tt1.hourId
|
|
|
+ )tt2
|
|
|
+ )finalFour ON classhour.hourId =finalFour.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getAvgStayTimeListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalFive.avgStayTime,'') AS avgStayTime
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ tt1.hourId AS hourId,
|
|
|
+ LPAD(FLOOR(tt1.avgStayTime / 3600000), 5, '0') || ':' ||
|
|
|
+ LPAD(FLOOR((tt1.avgStayTime % 3600000) / 60000), 2, '0') || ':' ||
|
|
|
+ LPAD(FLOOR((tt1.avgStayTime % 60000) / 1000), 2, '0') AS avgStayTime
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ z1.hourId AS hourId,
|
|
|
+ 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.hourId AS hourId,
|
|
|
+ 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'
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ )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.hourId,t1.userId
|
|
|
+ )z1
|
|
|
+ GROUP BY z1.hourId
|
|
|
+ )tt1
|
|
|
+ )finalFive ON classhour.hourId =finalFive.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getJumpOutRateListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalSix.jumpOutRate,0) AS jumpOutRate
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ z1.hourId AS hourId,
|
|
|
+ CASE
|
|
|
+ when z1.jumpOutCount=0 or z1.jumpOutCount is NULL OR z1.allCount=0 OR z1.allCount IS null then 0
|
|
|
+ else TRUNC(z1.jumpOutCount * 1.0 / z1.allCount, 2)
|
|
|
+ END AS jumpOutRate
|
|
|
+ FROM(
|
|
|
+ -- #当前这些开课下所有课程的对应课时,各自所有观看过的记录
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- csb.ID AS csbId,
|
|
|
+ -- csb.PROGRESS AS progress
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ count(CASE WHEN csb.PROGRESS < 100 THEN 1 END) AS jumpOutCount,
|
|
|
+ count(csb.ID) 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
|
|
|
+ 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="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ )t1
|
|
|
+ JOIN (SELECT csb1.ID,csb1.USER_ID,csb1.HOUR_ID,csb1.PROGRESS 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.hourId
|
|
|
+ )z1
|
|
|
+ )finalSix ON classhour.hourId =finalSix.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getDownloadCountListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalSeven.downloadCount,0) AS downloadCount
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- csb.USER_ID AS userId
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(COUNT(csb.HOUR_ID AS hourId),0) AS downloadCount
|
|
|
+ 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="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" 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='2' AND csb1.TYPE='2') csb ON csb.HOUR_ID =t1.hourId AND csb.USER_ID=t1.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )finalSeven ON classhour.hourId =finalSeven.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getNoteCountListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalEight.noteCount,0) AS noteCount
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.courseId AS courseId,
|
|
|
+ -- cr.ID AS crId,
|
|
|
+ -- cr.FUNC_TYPE AS crFuncType
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(count(cr.ID),0) noteCount
|
|
|
+ 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
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY stu.ID,cch.ID,cc.ID,ci.COURSE_ID
|
|
|
+ )t1
|
|
|
+ JOIN COURSE_RELATE cr ON t1.hourId=cr.MAIN_ID AND cr.DELETE_FLAG ='NOT_DELETE' and cr.CHAPTERHOUR_TYPE ='1' AND cr.INFO_TYPE ='1' AND FUNC_TYPE ='6'
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )finalEight ON classhour.hourId =finalEight.hourId
|
|
|
+ </select>
|
|
|
+ <select id="getPostCountListVideoDetail" resultType="java.util.Map">
|
|
|
+ SELECT
|
|
|
+ classhour.hourId AS hourId,
|
|
|
+ IFNULL(finalNine.postCount,0) AS postCount
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ basis.hourId AS hourId,
|
|
|
+ basis.chapterId AS chapterId,
|
|
|
+ basis.courseId AS courseId
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ cch1.ID AS hourId,
|
|
|
+ cc1.ID AS chapterId,
|
|
|
+ ci1.COURSE_ID AS courseId
|
|
|
+ FROM COURSE_INFO ci1
|
|
|
+ LEFT JOIN COURSE_OPEN cop ON ci1.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CHAPTER cc1 ON ci1.COURSE_ID =cc1.COURSE_ID AND cc1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ LEFT JOIN COURSE_CLASSHOUR cch1 ON cc1.ID=cch1.CHAPTER_ID AND cch1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ WHERE ci1.DELETE_FLAG ='NOT_DELETE'
|
|
|
+ AND cch1.ID IS NOT NULL
|
|
|
+ AND cc1.ID IS NOT NULL
|
|
|
+ AND ci1.COURSE_ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch1.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY cch1.ID,cc1.ID,ci1.COURSE_ID
|
|
|
+ )basis
|
|
|
+ )classhour
|
|
|
+ LEFT JOIN(
|
|
|
+ SELECT
|
|
|
+ -- t1.userId AS userId,
|
|
|
+ -- t1.chapterId AS chapterId,
|
|
|
+ -- t1.hourId AS hourId,
|
|
|
+ -- t2.replyId AS replyId
|
|
|
+ t1.hourId AS hourId,
|
|
|
+ IFNULL(count(t2.replyId),0) postCount
|
|
|
+ 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 cc.ID IS NOT NULL
|
|
|
+ AND cch.ID IS NOT NULL
|
|
|
+ AND ci.COURSE_ID IS NOT NULL
|
|
|
+ AND stu.ID IS NOT NULL
|
|
|
+ <if test="hourIdList !=null and hourIdList.size()>0">
|
|
|
+ and cch.ID in
|
|
|
+ <foreach collection=" hourIdList" close=")" index="index" item="item" open="(" separator=",">
|
|
|
+ #{item}
|
|
|
+ </foreach>
|
|
|
+ </if>
|
|
|
+ GROUP BY stu.ID,cc.ID,ci.COURSE_ID,cch.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
|
|
|
+ )t2 ON t1.chapterId=t2.chapterId AND t1.userId=t2.userId
|
|
|
+ WHERE 1=1
|
|
|
+ GROUP BY t1.hourId
|
|
|
+ )finalNine ON classhour.hourId =finalNine.hourId
|
|
|
+ </select>
|
|
|
+
|
|
|
+</mapper>
|