|
|
@ -37,64 +37,63 @@ |
|
|
|
]]> |
|
|
|
]]> |
|
|
|
</select> |
|
|
|
</select> |
|
|
|
<select id="getAqServiceDimensionData" resultType="java.util.Map"> |
|
|
|
<select id="getAqServiceDimensionData" resultType="java.util.Map"> |
|
|
|
|
|
|
|
SELECT |
|
|
|
|
|
|
|
COUNT ( q.ID ) AS "value", |
|
|
|
|
|
|
|
( dict.dict_value || ': ' || COUNT ( q.ID ) || ' 条' ) AS "name" |
|
|
|
|
|
|
|
FROM |
|
|
|
|
|
|
|
ex_dict dict |
|
|
|
|
|
|
|
LEFT JOIN ex_question_categories q ON q.service_type_id = dict.dict_key |
|
|
|
|
|
|
|
AND q.is_deleted = 0 |
|
|
|
|
|
|
|
AND q.status = 1 |
|
|
|
|
|
|
|
<if test="id != null and id != ''"> |
|
|
|
|
|
|
|
AND q.industry_id = #{id} |
|
|
|
|
|
|
|
</if> |
|
|
|
|
|
|
|
WHERE |
|
|
|
|
|
|
|
dict.code = 'serviceTypeDict' |
|
|
|
|
|
|
|
AND dict.is_deleted = 0 |
|
|
|
|
|
|
|
<![CDATA[ AND dict.parent_id <> 0 ]]> |
|
|
|
|
|
|
|
|
|
|
|
SELECT |
|
|
|
|
|
|
|
COUNT ( q.ID ) AS "value", |
|
|
|
|
|
|
|
( dict.dict_value || ': ' || COUNT ( q.ID ) || ' 条' ) AS "name" |
|
|
|
|
|
|
|
FROM |
|
|
|
|
|
|
|
ex_dict dict |
|
|
|
|
|
|
|
LEFT JOIN ex_question_categories q ON q.service_type_id = dict.dict_key |
|
|
|
|
|
|
|
AND q.is_deleted = 0 |
|
|
|
|
|
|
|
AND q.status = 1 |
|
|
|
|
|
|
|
<if test="id != null and id != ''"> |
|
|
|
|
|
|
|
AND q.industry_id = #{id} |
|
|
|
|
|
|
|
</if> |
|
|
|
|
|
|
|
WHERE |
|
|
|
|
|
|
|
dict.code = 'serviceTypeDict' |
|
|
|
|
|
|
|
AND dict.is_deleted = 0 |
|
|
|
|
|
|
|
<![CDATA[ AND dict.parent_id <> 0 ]]> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GROUP BY |
|
|
|
|
|
|
|
dict.dict_key, |
|
|
|
|
|
|
|
dict.dict_value |
|
|
|
|
|
|
|
ORDER BY |
|
|
|
|
|
|
|
dict.dict_key |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GROUP BY |
|
|
|
|
|
|
|
dict.dict_key, |
|
|
|
|
|
|
|
dict.dict_value |
|
|
|
|
|
|
|
ORDER BY |
|
|
|
|
|
|
|
dict.dict_key |
|
|
|
</select> |
|
|
|
</select> |
|
|
|
<select id="getExamTableData" resultType="java.util.Map"> |
|
|
|
<select id="getExamTableData" resultType="java.util.Map"> |
|
|
|
<![CDATA[ |
|
|
|
WITH exam_Count AS ( |
|
|
|
-- 定义 CTE exam_Count,统计符合条件的考试数量 |
|
|
|
SELECT COUNT(1) AS "count" |
|
|
|
WITH exam_Count AS ( |
|
|
|
FROM ex_exam_info |
|
|
|
SELECT COUNT(1) AS "count" |
|
|
|
WHERE status = 1 |
|
|
|
FROM ex_exam_info |
|
|
|
AND publish_status = 1 |
|
|
|
WHERE status = 1 |
|
|
|
AND is_deleted = 0 |
|
|
|
AND publish_status = 1 |
|
|
|
), |
|
|
|
AND is_deleted = 0 |
|
|
|
scores AS ( |
|
|
|
), |
|
|
|
SELECT |
|
|
|
-- 定义 CTE scores,计算每个考试记录的得分比例和用时 |
|
|
|
score.total_score / papers.total_score AS score, |
|
|
|
scores AS ( |
|
|
|
score.exam_time_spent AS time_spent |
|
|
|
SELECT |
|
|
|
FROM |
|
|
|
score.total_score / papers.total_score AS score, |
|
|
|
ex_exam_scores score |
|
|
|
score.exam_time_spent AS time_spent |
|
|
|
LEFT JOIN ex_exam_info info ON info.ID = score.exam_id |
|
|
|
FROM |
|
|
|
AND info.publish_status = 1 |
|
|
|
ex_exam_scores score |
|
|
|
AND info.is_deleted = 0 |
|
|
|
LEFT JOIN ex_exam_info info ON info.ID = score.exam_id |
|
|
|
LEFT JOIN ex_exam_papers papers ON papers.ID = info.paper_id |
|
|
|
AND info.publish_status = 1 |
|
|
|
AND papers.is_deleted = 0 |
|
|
|
AND info.is_deleted = 0 |
|
|
|
WHERE |
|
|
|
LEFT JOIN ex_exam_papers papers ON papers.ID = info.paper_id |
|
|
|
score.is_deleted = 0 |
|
|
|
AND papers.is_deleted = 0 |
|
|
|
) |
|
|
|
WHERE |
|
|
|
SELECT |
|
|
|
score.is_deleted = 0 |
|
|
|
1 AS "key", |
|
|
|
) |
|
|
|
(SELECT "count" FROM exam_Count) AS "examTimes", |
|
|
|
-- 主查询,统计相关信息 |
|
|
|
(SELECT COUNT(1) FROM scores) AS "participants", |
|
|
|
SELECT |
|
|
|
(SELECT AVG(time_spent) FROM scores) AS "averageTime", |
|
|
|
1 as "key", |
|
|
|
ROUND( |
|
|
|
(SELECT "count" FROM exam_Count) AS "examTimes", |
|
|
|
CASE |
|
|
|
(SELECT COUNT(1) FROM scores) AS "participants", |
|
|
|
WHEN (SELECT COUNT(1) FROM scores) = 0 THEN 0 |
|
|
|
(SELECT AVG(time_spent) FROM scores) AS "averageTime", |
|
|
|
ELSE (SELECT COUNT(1) FROM scores WHERE score >= 0.6) * 100.0 / (SELECT COUNT(1) FROM scores) |
|
|
|
ROUND((SELECT COUNT(1) FROM scores WHERE score >= 0.6) * 100.0 / (SELECT COUNT(1) FROM scores), 2) AS "passRate" |
|
|
|
END, |
|
|
|
]]> |
|
|
|
2 |
|
|
|
|
|
|
|
) AS "passRate" |
|
|
|
</select> |
|
|
|
</select> |
|
|
|
<select id="getScoreDistributionData" resultType="java.util.Map"> |
|
|
|
<select id="getScoreDistributionData" resultType="java.util.Map"> |
|
|
|
<![CDATA[ |
|
|
|
<![CDATA[ |
|
|
@ -107,71 +106,78 @@ |
|
|
|
info.ID |
|
|
|
info.ID |
|
|
|
FROM |
|
|
|
FROM |
|
|
|
ex_exam_scores score |
|
|
|
ex_exam_scores score |
|
|
|
LEFT JOIN ex_exam_info info ON info.ID = score.exam_id |
|
|
|
LEFT JOIN ex_exam_info info ON info.ID = score.exam_id |
|
|
|
AND info.publish_status = 1 |
|
|
|
AND info.publish_status = 1 |
|
|
|
AND info.is_deleted = 0 |
|
|
|
AND info.is_deleted = 0 |
|
|
|
LEFT JOIN ex_exam_papers papers ON papers.ID = info.paper_id |
|
|
|
LEFT JOIN ex_exam_papers papers ON papers.ID = info.paper_id |
|
|
|
AND papers.is_deleted = 0 |
|
|
|
AND papers.is_deleted = 0 |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
score.is_deleted = 0 |
|
|
|
score.is_deleted = 0 |
|
|
|
), |
|
|
|
), |
|
|
|
-- 定义 CTE total,用于计算总人数 |
|
|
|
-- 定义 CTE total,用于计算总人数 |
|
|
|
total AS ( |
|
|
|
total AS ( |
|
|
|
SELECT count(1) headcount |
|
|
|
SELECT COUNT(1) AS headcount |
|
|
|
FROM |
|
|
|
FROM |
|
|
|
ex_exam_scores score |
|
|
|
ex_exam_scores score |
|
|
|
LEFT JOIN ex_exam_info info ON info.ID = score.exam_id |
|
|
|
LEFT JOIN ex_exam_info info ON info.ID = score.exam_id |
|
|
|
AND info.publish_status = 1 |
|
|
|
AND info.publish_status = 1 |
|
|
|
AND info.is_deleted = 0 |
|
|
|
AND info.is_deleted = 0 |
|
|
|
LEFT JOIN ex_exam_papers papers ON papers.ID = info.paper_id |
|
|
|
LEFT JOIN ex_exam_papers papers ON papers.ID = info.paper_id |
|
|
|
AND papers.is_deleted = 0 |
|
|
|
AND papers.is_deleted = 0 |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
score.is_deleted = 0 |
|
|
|
score.is_deleted = 0 |
|
|
|
) |
|
|
|
) |
|
|
|
-- 主查询部分,计算不同成绩区间的比例并精确到小数点后两位 |
|
|
|
-- 主查询部分,计算不同成绩区间的比例并精确到小数点后两位 |
|
|
|
SELECT |
|
|
|
SELECT |
|
|
|
ROUND(COUNT(1) / (SELECT headcount FROM total) * 100, 2) AS "value" , |
|
|
|
ROUND(COUNT(1) / total.headcount * 100, 2) AS "value", |
|
|
|
'优秀占比: '||ROUND(COUNT(1) / (SELECT headcount FROM total) * 100, 2) || '%' AS "name" |
|
|
|
'优秀占比: ' || ROUND(COUNT(1) / total.headcount * 100, 2) || '%' AS "name" |
|
|
|
FROM |
|
|
|
FROM |
|
|
|
scores |
|
|
|
scores, total |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
grade >= 0.9 |
|
|
|
grade >= 0.9 |
|
|
|
|
|
|
|
GROUP BY total.headcount |
|
|
|
|
|
|
|
|
|
|
|
UNION ALL |
|
|
|
UNION ALL |
|
|
|
|
|
|
|
|
|
|
|
SELECT |
|
|
|
SELECT |
|
|
|
ROUND(COUNT(1) / (SELECT headcount FROM total) * 100, 2) AS "value" , |
|
|
|
ROUND(COUNT(1) / total.headcount * 100, 2) AS "value", |
|
|
|
'合格占比: '||ROUND(COUNT(1) / (SELECT headcount FROM total) * 100, 2) || '%'AS "name" |
|
|
|
'合格占比: ' || ROUND(COUNT(1) / total.headcount * 100, 2) || '%' AS "name" |
|
|
|
FROM |
|
|
|
FROM |
|
|
|
scores |
|
|
|
scores, total |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
grade < 0.9 |
|
|
|
grade < 0.9 |
|
|
|
AND grade >= 0.6 |
|
|
|
AND grade >= 0.6 |
|
|
|
|
|
|
|
GROUP BY total.headcount |
|
|
|
|
|
|
|
|
|
|
|
UNION ALL |
|
|
|
UNION ALL |
|
|
|
|
|
|
|
|
|
|
|
SELECT |
|
|
|
SELECT |
|
|
|
ROUND(COUNT(1) / (SELECT headcount FROM total) * 100, 2) AS "value" , |
|
|
|
ROUND(COUNT(1) / total.headcount * 100, 2) AS "value", |
|
|
|
'需努力占比: '||ROUND(COUNT(1) / (SELECT headcount FROM total) * 100, 2) || '%'AS "name" |
|
|
|
'需努力占比: ' || ROUND(COUNT(1) / total.headcount * 100, 2) || '%' AS "name" |
|
|
|
FROM |
|
|
|
FROM |
|
|
|
scores |
|
|
|
scores, total |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
grade < 0.6; |
|
|
|
grade < 0.6 |
|
|
|
|
|
|
|
GROUP BY total.headcount; |
|
|
|
]]> |
|
|
|
]]> |
|
|
|
</select> |
|
|
|
</select> |
|
|
|
<select id="getPaperDistributionData" resultType="java.util.Map"> |
|
|
|
<select id="getPaperDistributionData" resultType="java.util.Map"> |
|
|
|
SELECT COUNT |
|
|
|
SELECT |
|
|
|
( 1 ) AS "value", |
|
|
|
COUNT(1) AS "value", |
|
|
|
ind.industry_name || ': '|| COUNT( 1 ) || ' 套' AS "name" |
|
|
|
ind.industry_name || ': ' || COUNT(1) || ' 套' AS "name" |
|
|
|
FROM |
|
|
|
FROM |
|
|
|
tbl_industry ind |
|
|
|
tbl_industry ind |
|
|
|
left join ex_exam_papers papers |
|
|
|
LEFT JOIN ex_exam_papers papers ON papers.industry_id = ind.industry_id |
|
|
|
on papers.industry_id = ind.industry_id |
|
|
|
AND papers.is_deleted = 0 |
|
|
|
and papers.is_deleted = 0 |
|
|
|
|
|
|
|
AND papers.paper_status = 1 |
|
|
|
|
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
ind.status = 1 |
|
|
|
ind.status = 1 |
|
|
|
|
|
|
|
AND papers.is_deleted = 0 |
|
|
|
|
|
|
|
AND papers.paper_status = 1 |
|
|
|
GROUP BY |
|
|
|
GROUP BY |
|
|
|
ind.industry_id , |
|
|
|
ind.industry_id, |
|
|
|
ind.industry_name |
|
|
|
ind.industry_name |
|
|
|
ORDER BY |
|
|
|
ORDER BY |
|
|
|
ind.industry_id |
|
|
|
ind.industry_id |
|
|
|
</select> |
|
|
|
</select> |
|
|
|
<select id="getQuestionTypeDistributionData" resultType="java.util.Map"> |
|
|
|
<select id="getQuestionTypeDistributionData" resultType="java.util.Map"> |
|
|
|
with total as ( |
|
|
|
with total as ( |
|
|
@ -366,6 +372,7 @@ |
|
|
|
and score.is_deleted = 0 |
|
|
|
and score.is_deleted = 0 |
|
|
|
WHERE |
|
|
|
WHERE |
|
|
|
paper.is_deleted = 0 |
|
|
|
paper.is_deleted = 0 |
|
|
|
|
|
|
|
and paper.paper_status = 1 |
|
|
|
<if test="paperName != null and paperName != ''"> |
|
|
|
<if test="paperName != null and paperName != ''"> |
|
|
|
AND paper.paper_name LIKE '%' || #{paperName} || '%' |
|
|
|
AND paper.paper_name LIKE '%' || #{paperName} || '%' |
|
|
|
</if> |
|
|
|
</if> |
|
|
|