|
@@ -638,7 +638,7 @@
|
|
|
SELECT
|
|
|
(
|
|
|
SELECT
|
|
|
- count( fcc.user_id )
|
|
|
+ count(distinct fcc.user_id )
|
|
|
FROM
|
|
|
fs_user_course_count fcc
|
|
|
LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
@@ -661,7 +661,7 @@
|
|
|
) as courseWatchNum,
|
|
|
(
|
|
|
SELECT
|
|
|
- count( fcc.user_id )
|
|
|
+ count(distinct fcc.user_id )
|
|
|
FROM
|
|
|
fs_user_course_count fcc
|
|
|
LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
@@ -689,7 +689,7 @@
|
|
|
SELECT
|
|
|
(
|
|
|
SELECT
|
|
|
- count( fs_user.user_id )
|
|
|
+ count(distinct fs_user.user_id )
|
|
|
FROM
|
|
|
fs_course_answer_logs
|
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
@@ -711,7 +711,7 @@
|
|
|
) AS answerNum,
|
|
|
(
|
|
|
SELECT
|
|
|
- count( fs_user.user_id )
|
|
|
+ count(distinct fs_user.user_id )
|
|
|
FROM
|
|
|
fs_course_answer_logs
|
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
@@ -783,17 +783,20 @@
|
|
|
</select>
|
|
|
|
|
|
<select id="countCourseDetails" resultType="Map">
|
|
|
- select (SELECT count(fc.course_id)
|
|
|
+ select (SELECT count(DISTINCT fc.course_id)
|
|
|
FROM fs_user_course fc
|
|
|
WHERE fc.is_del = 0
|
|
|
+ AND FIND_IN_SET(#{companyId}, fc.company_ids)
|
|
|
<if test="courseId != null and courseId != ''">
|
|
|
AND fc.course_id = #{courseId}
|
|
|
</if>
|
|
|
) as courseNum,
|
|
|
|
|
|
- (SELECT count(fcv.video_id)
|
|
|
+ (SELECT count(DISTINCT fcv.video_id)
|
|
|
FROM fs_user_course_video fcv
|
|
|
LEFT JOIN fs_user_course fc ON fc.course_id = fcv.course_id
|
|
|
+ WHERE fc.is_del = 0
|
|
|
+ AND FIND_IN_SET(#{companyId}, fc.company_ids)
|
|
|
<if test="courseId != null and courseId != ''">
|
|
|
AND fcv.course_id = #{courseId}
|
|
|
</if>
|
|
@@ -801,7 +804,7 @@
|
|
|
AND fcv.video_id = #{videoId}
|
|
|
</if>
|
|
|
) as videoNum,
|
|
|
- ( SELECT count( user_id ) FROM fs_user_course_count fcc
|
|
|
+ ( SELECT count(DISTINCT user_id ) FROM fs_user_course_count fcc
|
|
|
LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
|
<if test="courseId != null and courseId != ''">
|
|
|
AND fcc.course_id = #{courseId}
|
|
@@ -812,11 +815,11 @@
|
|
|
) as courseUserNum
|
|
|
</select>
|
|
|
|
|
|
- <select id="countUserRanking" resultType="FsUserRankingVO">
|
|
|
+ <select id="countUserRankingByComplete" resultType="FsUserRankingVO">
|
|
|
SELECT
|
|
|
company_user.nick_name as userName,
|
|
|
ifnull(
|
|
|
- ROUND((COUNT( CASE WHEN fcc.complete_watch_count > 0 THEN 1 END ) / count( fcc.user_id ))*100,2),0
|
|
|
+ ROUND((COUNT(DISTINCT CASE WHEN fcc.complete_watch_count > 0 THEN 1 END ) / count(1))*100,2),0
|
|
|
) as completeRate
|
|
|
FROM
|
|
|
fs_user_course_count fcc
|
|
@@ -824,7 +827,7 @@
|
|
|
LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
|
|
|
LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
|
WHERE
|
|
|
- company_user.parent_id = #{userId}
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
|
<if test="startTime != null and startTime !='' ">
|
|
|
AND fcc.create_time >= #{startTime}
|
|
|
</if>
|
|
@@ -838,15 +841,25 @@
|
|
|
AND fcv.video_id = #{videoId}
|
|
|
</if>
|
|
|
group by fcc.user_id
|
|
|
- order by completeRate #{order}
|
|
|
+ <choose>
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
+ order by completeRate asc
|
|
|
+ </when>
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
+ order by completeRate desc
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ order by completeRate desc
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
limit 20
|
|
|
</select>
|
|
|
|
|
|
- <select id="countCourseRanking" resultType="FsUserRankingVO">
|
|
|
+ <select id="countUserRankingByRight" resultType="FsUserRankingVO">
|
|
|
SELECT
|
|
|
company_user.nick_name as userName,
|
|
|
ifnull(ROUND(
|
|
|
- (COUNT( CASE WHEN fs_course_answer_logs.is_right = 1 THEN 1 END ) / count( fs_user.user_id ))
|
|
|
+ (COUNT(DISTINCT CASE WHEN fs_course_answer_logs.is_right = 1 THEN 1 END ) / count(1))
|
|
|
*100,2),0
|
|
|
) as answerRightRate
|
|
|
FROM
|
|
@@ -854,7 +867,7 @@
|
|
|
LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
|
LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
|
|
|
WHERE
|
|
|
- company_user.parent_id = #{userId}
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
|
<if test="startTime != null and startTime !='' ">
|
|
|
AND fs_course_answer_logs.create_time >= #{startTime}
|
|
|
</if>
|
|
@@ -868,8 +881,109 @@
|
|
|
AND fs_course_answer_logs.video_id = #{videoId}
|
|
|
</if>
|
|
|
group by fs_user.user_id
|
|
|
- order by answerRightRate #{order}
|
|
|
+ <choose>
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
+ order by answerRightRate asc
|
|
|
+ </when>
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
+ order by answerRightRate desc
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ order by answerRightRate desc
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
limit 20
|
|
|
</select>
|
|
|
|
|
|
+ <select id="countCourseRankingByComplete" resultType="FsCourseRankingVO">
|
|
|
+ SELECT
|
|
|
+ fcv.title AS videoName,
|
|
|
+ ifnull(
|
|
|
+ ROUND((
|
|
|
+ COUNT( DISTINCT CASE WHEN fcc.complete_watch_count > 0 THEN 1 END ) / count(1))* 100,
|
|
|
+ 2
|
|
|
+ ),
|
|
|
+ 0
|
|
|
+ ) AS completeRate
|
|
|
+ FROM
|
|
|
+ fs_user_course_count fcc
|
|
|
+ LEFT JOIN fs_user ON fs_user.user_id = fcc.user_id
|
|
|
+ LEFT JOIN company_user ON fs_user.company_user_id = company_user.user_id
|
|
|
+ LEFT JOIN fs_user_course_video fcv ON fcv.course_id = fcc.course_id
|
|
|
+ WHERE
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
|
+ <if test="startTime != null and startTime !='' ">
|
|
|
+ AND fcc.create_time >= #{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime != null and endTime != ''">
|
|
|
+ AND fcc.create_time <= #{endTime}
|
|
|
+ </if>
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
+ AND fcc.course_id = #{courseId}
|
|
|
+ </if>
|
|
|
+ <if test="videoId != null and videoId != ''">
|
|
|
+ AND fcv.video_id = #{videoId}
|
|
|
+ </if>
|
|
|
+ GROUP BY
|
|
|
+ fcv.video_id
|
|
|
+ <choose>
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
+ ORDER BY completeRate asc
|
|
|
+ </when>
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
+ ORDER BY completeRate desc
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ ORDER BY completeRate desc
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
+ LIMIT 20
|
|
|
+ </select>
|
|
|
+
|
|
|
+ <select id="countCourseRankingByRight" resultType="FsCourseRankingVO">
|
|
|
+ SELECT
|
|
|
+ fcv.title AS videoName,
|
|
|
+ ifnull(
|
|
|
+ ROUND(
|
|
|
+ (
|
|
|
+ COUNT( DISTINCT CASE WHEN fs_course_answer_logs.is_right = 1 THEN 1 END ) / count(1)) * 100,
|
|
|
+ 2
|
|
|
+ ),
|
|
|
+ 0
|
|
|
+ ) AS answerRightRate
|
|
|
+ FROM
|
|
|
+ fs_course_answer_logs
|
|
|
+ LEFT JOIN fs_user ON fs_user.user_id = fs_course_answer_logs.user_id
|
|
|
+ LEFT JOIN company_user ON company_user.user_id = fs_user.company_user_id
|
|
|
+ LEFT JOIN fs_user_course_video fcv ON fcv.video_id = fs_course_answer_logs.video_id
|
|
|
+ WHERE
|
|
|
+ ( company_user.user_id = #{userId} OR company_user.parent_id = #{userId} )
|
|
|
+ <if test="startTime != null and startTime !='' ">
|
|
|
+ AND fs_course_answer_logs.create_time >= #{startTime}
|
|
|
+ </if>
|
|
|
+ <if test="endTime != null and endTime != ''">
|
|
|
+ AND fs_course_answer_logs.create_time <= #{endTime}
|
|
|
+ </if>
|
|
|
+ <if test="courseId != null and courseId != ''">
|
|
|
+ AND fs_course_answer_logs.course_id = #{courseId}
|
|
|
+ </if>
|
|
|
+ <if test="videoId != null and videoId != ''">
|
|
|
+ AND fs_course_answer_logs.video_id = #{videoId}
|
|
|
+ </if>
|
|
|
+ GROUP BY
|
|
|
+ fs_course_answer_logs.video_id
|
|
|
+ <choose>
|
|
|
+ <when test="order != null and order == 'asc'">
|
|
|
+ ORDER BY answerRightRate asc
|
|
|
+ </when>
|
|
|
+ <when test="order != null and order == 'desc'">
|
|
|
+ ORDER BY answerRightRate desc
|
|
|
+ </when>
|
|
|
+ <otherwise>
|
|
|
+ ORDER BY answerRightRate desc
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
+ LIMIT 20
|
|
|
+ </select>
|
|
|
+
|
|
|
</mapper>
|