531 lines
20 KiB
XML
531 lines
20 KiB
XML
|
|
<?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="UnivExamAnswer">
|
||
|
|
|
||
|
|
|
||
|
|
<insert id="insertUnivExamAnswer" parameterType="UnivExamAnswer">
|
||
|
|
INSERT INTO UnivExamAnswer ( examAnswerId, userId, examId, examType,
|
||
|
|
examPaperId, part1OrigiScore, part1Score, part1TrueScore, accuracy,
|
||
|
|
fluent, integrity, part1Content, part2OrigiScore, part2Score,
|
||
|
|
part2TrueScore, part2Content, origiScore, score, trueScore,
|
||
|
|
created, areaId ,
|
||
|
|
machineScore , humanScore , paperFile , md5Code , content )
|
||
|
|
Values ( #{examAnswerId}, #{userId}, #{examId}, #{examType}, #{examPaperId},
|
||
|
|
#{part1OrigiScore}, #{part1Score}, #{part1TrueScore}, #{accuracy},
|
||
|
|
#{fluent}, #{integrity}, #{part1Content}, #{part2OrigiScore}, #{part2Score},
|
||
|
|
#{part2TrueScore}, #{part2Content}, #{origiScore}, #{score}, #{trueScore},
|
||
|
|
current_timestamp, #{areaId} ,
|
||
|
|
#{machineScore} , #{humanScore} , #{paperFile} , #{md5Code} , #{content} )
|
||
|
|
|
||
|
|
</insert>
|
||
|
|
|
||
|
|
<update id="updateUnivExamAnswer" parameterType="UnivExamAnswer">
|
||
|
|
UPDATE UnivExamAnswer
|
||
|
|
SET examAnswerId = #{examAnswerId}, userId = #{userId}, examId = #{examId},
|
||
|
|
examType = #{examType}, examPaperId = #{examPaperId},
|
||
|
|
part1OrigiScore = #{part1OrigiScore}, part1Score = #{part1Score},
|
||
|
|
part1TrueScore = #{part1TrueScore}, accuracy = #{accuracy},
|
||
|
|
fluent = #{fluent}, integrity = #{integrity},
|
||
|
|
part1Content = #{part1Content}, part2OrigiScore = #{part2OrigiScore},
|
||
|
|
part2Score = #{part2Score}, part2TrueScore = #{part2TrueScore},
|
||
|
|
part2Content = #{part2Content}, origiScore = #{origiScore},
|
||
|
|
score = #{score}, trueScore = #{trueScore}, created = #{created},
|
||
|
|
areaId = #{areaId} ,
|
||
|
|
machineScore = #{machineScore} , humanScore = #{humanScore} ,
|
||
|
|
paperFile = #{paperFile} , md5Code = #{md5Code} , content = #{content}
|
||
|
|
WHERE examAnswerId=#{examAnswerId}
|
||
|
|
</update>
|
||
|
|
|
||
|
|
<select id="getUnivExamAnswerByKey" parameterType="java.lang.Integer" resultType="UnivExamAnswer">
|
||
|
|
SELECT examAnswerId , userId , examId , examType , examPaperId ,
|
||
|
|
part1OrigiScore , part1Score , part1TrueScore , accuracy , fluent ,
|
||
|
|
integrity , part1Content , part2OrigiScore , part2Score ,
|
||
|
|
part2TrueScore , part2Content , origiScore , score , trueScore ,
|
||
|
|
created , areaId ,
|
||
|
|
machineScore , humanScore , paperFile , md5Code , content
|
||
|
|
FROM UnivExamAnswer
|
||
|
|
WHERE examAnswerId=#{examAnswerId}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getSeqUnivExamAnswer" resultType="Integer" useCache="false" flushCache="true">
|
||
|
|
SELECT nextval('seq_univExamAnswerId')
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAnswerCountByUserId" parameterType="java.lang.Long" resultType="Integer">
|
||
|
|
SELECT count(*) as howmuch
|
||
|
|
from UnivExamAnswer
|
||
|
|
WHERE userId=#{userId}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAnswerByUserId" parameterType="java.util.Map" resultType="UnivExamAnswer">
|
||
|
|
SELECT examAnswerId , userId , examId , examType , examPaperId ,
|
||
|
|
part1OrigiScore , part1Score , part1TrueScore , accuracy , fluent ,
|
||
|
|
integrity , part1Content , part2OrigiScore , part2Score ,
|
||
|
|
part2TrueScore , part2Content , origiScore , score , trueScore ,
|
||
|
|
created , areaId ,
|
||
|
|
machineScore , humanScore , paperFile , md5Code , content
|
||
|
|
FROM UnivExamAnswer
|
||
|
|
WHERE userId=#{userId}
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
LIMIT #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
OFFSET #{offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAnswersCountByUserId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
|
||
|
|
SELECT count(*) as howmuch
|
||
|
|
from UnivExamAnswer
|
||
|
|
WHERE userId=#{userId} and areaId = #{areaid}
|
||
|
|
AND created > #{startTime} and created <= #{endTime}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAnswersByUserId" parameterType="java.util.Map" resultType="UnivExamAnswer">
|
||
|
|
|
||
|
|
SELECT examAnswerId , userId , examId , examType , examPaperId ,
|
||
|
|
part1OrigiScore , part1Score , part1TrueScore , accuracy , fluent ,
|
||
|
|
integrity , part1Content , part2OrigiScore , part2Score ,
|
||
|
|
part2TrueScore , part2Content , origiScore , score , trueScore ,
|
||
|
|
created , areaId ,
|
||
|
|
machineScore , humanScore , paperFile , md5Code , content
|
||
|
|
FROM UnivExamAnswer
|
||
|
|
WHERE userId=#{userId} and areaId = #{areaid}
|
||
|
|
AND created > #{startTime} and created <= #{endTime}
|
||
|
|
ORDER BY examAnswerId desc
|
||
|
|
LIMIT #{pageSize} OFFSET #{offset}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivMaxExamAchivesCountBySchoolId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
|
||
|
|
SELECT count(*)
|
||
|
|
FROM ( SELECT userId , max( score ) as maxScore
|
||
|
|
FROM UnivStudent m
|
||
|
|
INNER JOIN UnivEXAMANSWER n
|
||
|
|
ON m.schoolId = #{schoolId} AND m.studentId = n.userId
|
||
|
|
AND examId = #{examId}
|
||
|
|
GROUP BY userId ) a
|
||
|
|
INNER JOIN UnivExamAnswer b
|
||
|
|
ON b.examId = #{examId} and a.userId = b.userId
|
||
|
|
and a.maxScore = b.score and b.areaid = #{areaid}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivMaxExamAchivesBySchoolId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM ( SELECT userId , max( score ) as maxScore
|
||
|
|
FROM UnivStudent m
|
||
|
|
INNER JOIN UnivEXAMANSWER n
|
||
|
|
ON m.schoolId = #{schoolId} AND m.studentId = n.userId
|
||
|
|
AND examId = #{examId}
|
||
|
|
GROUP BY userId ) a
|
||
|
|
INNER JOIN UnivExamAnswer b
|
||
|
|
ON b.examId = #{examId} and a.userId = b.userId and a.maxScore = b.score
|
||
|
|
and b.areaid = #{areaid}
|
||
|
|
inner join Exam e on e.examId = b.examId
|
||
|
|
ORDER BY a.maxScore desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
LIMIT #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
OFFSET #{offset}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAchivesCountBySchoolId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
SELECT count(*)
|
||
|
|
FROM UnivStudent a
|
||
|
|
INNER JOIN UnivEXAMANSWER b
|
||
|
|
ON a.schoolId = #{schoolId} AND a.studentId = b.userId
|
||
|
|
AND b.examId = #{examId} and b.areaid = #{areaid}
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAchivesBySchoolId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM UnivStudent a
|
||
|
|
INNER JOIN UnivEXAMANSWER b
|
||
|
|
ON a.schoolId = #{schoolId} AND a.studentId = b.userId
|
||
|
|
AND b.examId = #{examId}
|
||
|
|
inner join UnivExam e on e.examId = b.examId
|
||
|
|
ORDER BY b.examAnswerId desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
LIMIT #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
OFFSET #{offset}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivMaxExamAchivesCountByUserId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
|
||
|
|
<!-- SELECT count(*)
|
||
|
|
FROM ( SELECT n.examId , max( score ) as maxScore
|
||
|
|
FROM UnivEXAMANSWER n
|
||
|
|
inner join univexam u on n.examid=u.examid and u.isOral=#{isOral}
|
||
|
|
WHERE n.userId = #{userId}
|
||
|
|
GROUP BY n.examId ) a
|
||
|
|
INNER JOIN UnivExamAnswer b
|
||
|
|
ON b.userId = #{userId} and a.examId = b.examId and a.maxScore = b.score and b.areaid = #{areaid}
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime} -->
|
||
|
|
|
||
|
|
|
||
|
|
SELECT count( distinct em.examid )
|
||
|
|
FROM univExamAnswer e inner join univexam em on e.examId=em.examId and em.isOral=#{isOral}
|
||
|
|
WHERE e.userId = #{userId}
|
||
|
|
|
||
|
|
AND e.created > #{startTime} and e.created <= #{endTime}
|
||
|
|
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivMaxExamAchiveByUserId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
|
||
|
|
<!-- SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 73 then 'B'
|
||
|
|
when b.score >= 60 then 'C'
|
||
|
|
when b.score >= 45 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM ( SELECT n.examId , max( score ) as maxScore
|
||
|
|
FROM UnivEXAMANSWER n
|
||
|
|
inner join univexam u on n.examid=u.examid and u.isOral=#{isOral}
|
||
|
|
WHERE n.userId = #{userId}
|
||
|
|
GROUP BY n.examId ) a
|
||
|
|
INNER JOIN UnivExamAnswer b
|
||
|
|
ON b.userId = #{userId} and a.examId = b.examId and a.maxScore = b.score
|
||
|
|
and b.areaid = #{areaid}
|
||
|
|
inner join UnivExam e on e.examId = b.examId
|
||
|
|
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime}
|
||
|
|
|
||
|
|
|
||
|
|
ORDER BY a.examId desc
|
||
|
|
-->
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title , b.trueScore , b.machineScore , b.humanScore
|
||
|
|
FROM ( SELECT userId , examAnswerId , examId , examType ,
|
||
|
|
examPaperId , score , created ,
|
||
|
|
rank() over (partition by examId order by score desc , created desc ) as mm ,
|
||
|
|
trueScore , machineScore , humanScore
|
||
|
|
FROM univEXAMANSWER
|
||
|
|
WHERE userId = #{userId}
|
||
|
|
|
||
|
|
AND created > #{startTime} and created <= #{endTime}
|
||
|
|
|
||
|
|
) b
|
||
|
|
INNER JOIN univExam e
|
||
|
|
on b.examId = e.examId and e.isOral=#{isOral}
|
||
|
|
WHERE b.mm = 1
|
||
|
|
ORDER BY b.created desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
LIMIT #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
OFFSET #{offset}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAchivesCountByUserId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
|
||
|
|
SELECT count(*)
|
||
|
|
FROM UnivExamAnswer b inner join univexam a on a.examid=b.examid and a.isOral=#{isOral}
|
||
|
|
WHERE b.userId = #{userId} and b.areaid = #{areaid}
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAchivesByUserId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM UnivExamAnswer b inner join UnivExam e on e.examId = b.examId and e.isOral=#{isOral}
|
||
|
|
WHERE b.userId = #{userId} and b.areaid = #{areaid}
|
||
|
|
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime}
|
||
|
|
|
||
|
|
ORDER BY b.examAnswerId desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
LIMIT #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
OFFSET #{offset}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<select id="getMaxUnivExamAnswersCountByClassesId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
SELECT count( distinct n.userId )
|
||
|
|
FROM UnivStudentownClass m
|
||
|
|
INNER JOIN UnivExamAnswer n
|
||
|
|
ON m.classesId = #{classesId}
|
||
|
|
AND m.studentId = n.userId
|
||
|
|
AND n.examId = #{examId}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getMaxUnivExamAnswersByClassesId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title , b.trueScore , b.machineScore , b.humanScore
|
||
|
|
FROM ( SELECT userId , examId ,
|
||
|
|
last_value( examAnswerId ) OVER (PARTITION BY userId
|
||
|
|
order by score desc ) as tempId ,
|
||
|
|
row_number() OVER (PARTITION BY userId
|
||
|
|
order by score desc ) as rn
|
||
|
|
FROM UnivStudentOwnClass m
|
||
|
|
INNER JOIN UnivEXAMANSWER n
|
||
|
|
ON m.classesId = #{classesId} AND m.studentId = n.userId
|
||
|
|
AND examId = #{examId}
|
||
|
|
) a
|
||
|
|
INNER JOIN UnivExamAnswer b
|
||
|
|
ON a.tempId = b.examAnswerId and a.rn = 1 and b.areaid = #{areaid}
|
||
|
|
inner join UnivExam e on e.examId = b.examId
|
||
|
|
ORDER BY b.score desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
LIMIT #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
OFFSET #{offset}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAnswersCountByClassesId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
|
||
|
|
SELECT count(*)
|
||
|
|
FROM UnivStudentOwnClass a
|
||
|
|
INNER JOIN UnivEXAMANSWER b
|
||
|
|
ON a.classesId = #{classesId} AND a.studentId = b.userId
|
||
|
|
AND b.examId = #{examId} and b.areaid = #{areaid}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamAnswersByClassesId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title , b.trueScore , b.machineScore , b.humanScore
|
||
|
|
FROM UnivStudentOwnClass a
|
||
|
|
INNER JOIN UnivEXAMANSWER b
|
||
|
|
ON a.classesId = #{classesId} AND a.studentId = b.userId
|
||
|
|
AND b.examId = #{examId}
|
||
|
|
inner join UnivExam e on e.examId = b.examId
|
||
|
|
ORDER BY b.examAnswerId desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
LIMIT #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
OFFSET #{offset}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getUnivExamCountByExamIdByUserId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
select count(*)
|
||
|
|
from Univexamanswer
|
||
|
|
where examid = #{examId} and userid = #{userId}
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
<select id="getNewMaxUnivHearAchivesCountByUserId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
|
||
|
|
with
|
||
|
|
temp as( SELECT count( distinct examid ) howmuch
|
||
|
|
FROM UnivhearAnswer
|
||
|
|
WHERE userId = #{userId}
|
||
|
|
AND created > #{startTime} and created <= #{endTime}
|
||
|
|
) ,
|
||
|
|
temp1 as (
|
||
|
|
SELECT count( distinct e.examid ) howmuch
|
||
|
|
FROM UnivExamAnswer e inner join Univexam em on e.examId=em.examId and em.isOral=2
|
||
|
|
WHERE e.userId = #{userId}
|
||
|
|
AND e.created > #{startTime} and e.created <= #{endTime}
|
||
|
|
)
|
||
|
|
select t.howmuch+t1.howmuch from temp t,temp1 t1
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
<select id="getNewMaxUnivHearAchivesByUserId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.hearPaperId as examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM ( SELECT userId , examAnswerId , examId , examType ,
|
||
|
|
hearPaperId , score , created ,
|
||
|
|
rank() over (partition by examId order by score desc , created desc ) as mm
|
||
|
|
FROM UnivhearANSWER
|
||
|
|
WHERE userId = #{userId}
|
||
|
|
|
||
|
|
AND created > #{startTime} and created <= #{endTime}
|
||
|
|
|
||
|
|
) b
|
||
|
|
INNER JOIN UnivHearExam e
|
||
|
|
on b.examId = e.examId
|
||
|
|
WHERE b.mm = 1
|
||
|
|
|
||
|
|
union
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM ( SELECT userId , examAnswerId , examId , examType ,
|
||
|
|
examPaperId , score , created ,
|
||
|
|
rank() over (partition by examId order by score desc , created desc ) as mm ,
|
||
|
|
trueScore , machineScore , humanScore
|
||
|
|
FROM UnivEXAMANSWER
|
||
|
|
WHERE userId = #{userId}
|
||
|
|
|
||
|
|
AND created > #{startTime} and created <= #{endTime}
|
||
|
|
|
||
|
|
) b
|
||
|
|
INNER JOIN UnivExam e
|
||
|
|
on b.examId = e.examId and e.isOral=2
|
||
|
|
WHERE b.mm = 1
|
||
|
|
|
||
|
|
ORDER BY created desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
limit #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
offset #{offset}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
</select>
|
||
|
|
|
||
|
|
|
||
|
|
<select id="getNewUnivHearAchivesCountByUserId" parameterType="java.util.Map" resultType="Integer">
|
||
|
|
|
||
|
|
with temp as (
|
||
|
|
SELECT count(*) howmuch FROM UnivhearAnswer b
|
||
|
|
WHERE b.userId = #{userId} and b.areaid = #{areaid}
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime}
|
||
|
|
),
|
||
|
|
temp1 as(
|
||
|
|
SELECT count(*) howmuch
|
||
|
|
FROM UnivExamAnswer b inner join Univexam e on b.examId = e.examid and e.isOral=2
|
||
|
|
WHERE b.userId = #{userId} and b.areaid = #{areaid}
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime})
|
||
|
|
select t.howmuch+t1.howmuch from temp t,temp1 t1
|
||
|
|
</select>
|
||
|
|
|
||
|
|
|
||
|
|
<select id="getNewUnivHearAchivesByUserId" parameterType="java.util.Map" resultType="ExamAchive">
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.hearPaperId as examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM UnivhearAnswer b inner join UnivhearExam e on e.examId = b.examId
|
||
|
|
WHERE b.userId = #{userId} and b.areaid = #{areaid}
|
||
|
|
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime}
|
||
|
|
union
|
||
|
|
|
||
|
|
SELECT b.userId , b.examAnswerId , b.examId , b.examType ,
|
||
|
|
b.examPaperId , b.score , b.created ,
|
||
|
|
|
||
|
|
case when b.score >= 85 then 'A'
|
||
|
|
when b.score >= 80 then 'B'
|
||
|
|
when b.score >= 70 then 'C'
|
||
|
|
when b.score >= 60 then 'D'
|
||
|
|
else 'E' end as level
|
||
|
|
, e.title
|
||
|
|
FROM UnivExamAnswer b inner join UnivExam e on e.examId = b.examId and e.isOral=2
|
||
|
|
WHERE b.userId = #{userId} and b.areaid = #{areaid}
|
||
|
|
|
||
|
|
AND b.created > #{startTime} and b.created <= #{endTime}
|
||
|
|
ORDER BY created desc
|
||
|
|
<if test="pageSize!=null">
|
||
|
|
limit #{pageSize}
|
||
|
|
</if>
|
||
|
|
|
||
|
|
<if test="offset!=null">
|
||
|
|
offset #{offset}
|
||
|
|
</if>
|
||
|
|
</select>
|
||
|
|
</mapper>
|