Index: lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java =================================================================== diff -u -r5129d828c41c0731ee7889271cffde6421e2146c -r2e1b7f6b445f4daa56b258b3d0c27cadca081b8e --- lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision 5129d828c41c0731ee7889271cffde6421e2146c) +++ lams_common/src/java/org/lamsfoundation/lams/qb/service/QbService.java (.../QbService.java) (revision 2e1b7f6b445f4daa56b258b3d0c27cadca081b8e) @@ -14,6 +14,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.stream.Collectors; import org.apache.log4j.Logger; import org.lamsfoundation.lams.gradebook.GradebookUserLesson; @@ -190,6 +191,7 @@ Lesson lesson = learningDesign.getLessons().iterator().next(); Long lessonId = lesson.getLessonId(); List userLessonGrades = gradebookService.getGradebookUserLesson(lessonId); + userLessonGrades = userLessonGrades.stream().filter(g -> g.getMark() != null).collect(Collectors.toList()); int participantCount = userLessonGrades.size(); QbStatsActivityDTO activityDTO = new QbStatsActivityDTO(); @@ -223,7 +225,7 @@ double incorrectUserMarkSum = 0; // sort grades by highest mark - Collections.sort(userLessonGrades, (a, b) -> a.getMark().compareTo(b.getMark())); + Collections.sort(userLessonGrades, Comparator.comparing(GradebookUserLesson::getMark)); // see how many learners should be in top/bottom 27% of the group int groupCount = (int) Math.ceil( Configuration.getAsInt(ConfigurationKeys.QB_STATS_MIN_PARTICIPANTS) / 100.0 * participantCount);