Преглед изворни кода

优化成绩分析列表在主观分或者客观分分别为NUll的情况,置为0分

nikang пре 6 година
родитељ
комит
f215e1edc8
1 измењених фајлова са 27 додато и 16 уклоњено
  1. 27 16
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

+ 27 - 16
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -68,30 +68,41 @@ public interface ExamStudentDao
     public ExamStudent findBySchoolIdAndSubjectCodeAndStudentCodeAndRemark(Integer schoolId, String subjectCode,
             String studentCode, String examSeqCode);
 
-    @Query("select sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 49.5 then 1 else 0 end),"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 50 and 59.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 69.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 70 and 79.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 80 and 89.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 90 and 100 then 1 else 0 end),"
-            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 59.5 then 1 else 0 end), "
-            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 100 then 1 else 0 end) "
+    @Query("select sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 0 and 49.5 then 1 else 0 end),"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 50 and 59.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 60 and 69.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 70 and 79.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 80 and 89.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 90 and 100 then 1 else 0 end),"
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 0 and 59.5 then 1 else 0 end), "
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 60 and 100 then 1 else 0 end) "
     		+ " from ExamStudent s where s.examId=?1 and s.subjectCode=?2 and s.upload=?3  and s.absent=?4 ")
 	public List<Object[]> statisticsByExamIdAndSubjectCode(Integer examId,
 			String code, Boolean upload, boolean absent);
 
-    @Query("select sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 49.5 then 1 else 0 end),"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 50 and 59.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 69.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 70 and 79.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 80 and 89.5 then 1 else 0 end) ,"
-    		+ "sum(case when (s.objectiveScore + s.subjectiveScore) between 90 and 100 then 1 else 0 end), "
-            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 0 and 59.5 then 1 else 0 end), "
-            + "sum(case when (s.objectiveScore + s.subjectiveScore) between 60 and 100 then 1 else 0 end) "
+    @Query("select sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 0 and 49.5 then 1 else 0 end),"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 50 and 59.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 60 and 69.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 70 and 79.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 80 and 89.5 then 1 else 0 end) ,"
+    		+ "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 90 and 100 then 1 else 0 end), "
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 0 and 59.5 then 1 else 0 end), "
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 60 and 100 then 1 else 0 end) "
     		+ " from ExamStudent s where s.examId=?1 and s.subjectCode=?2 ")
 	public List<Object[]> statisticsByExamIdAndSubjectCode(Integer examId,
 			String code);
 
+    @Query("select sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 0 and 49.5 then 1 else 0 end),"
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 50 and 59.5 then 1 else 0 end) ,"
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 60 and 69.5 then 1 else 0 end) ,"
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 70 and 79.5 then 1 else 0 end) ,"
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 80 and 89.5 then 1 else 0 end) ,"
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 90 and 100 then 1 else 0 end),"
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 0 and 59.5 then 1 else 0 end), "
+            + "sum(case when ((case when s.objectiveScore is null then 0 else s.objectiveScore end) + (case when s.subjectiveScore is null then 0 else s.subjectiveScore end)) between 60 and 100 then 1 else 0 end) "
+            + " from ExamStudent s where s.examId=?1 and s.subjectCode=?2 and s.upload=?3  and s.absent=?4 and s.breach = ?5")
+    public List<Object[]> statisticsByAbsentAndBreach(Integer examId, String code, Boolean upload,boolean absent,boolean breach);
+
 	public ExamStudent findByExamIdAndSubjectCodeStartingWithAndStudentCode(Integer examId,
 			String subjectCode, String studentCode);