Index: dbLearnStar-webApp/src/main/java/dblearnstar/webapp/pages/admin/StudentGroupProgress.java
===================================================================
--- dbLearnStar-webApp/src/main/java/dblearnstar/webapp/pages/admin/StudentGroupProgress.java	(revision f043cd6404370461abed776ab6cb88b6f7abf56e)
+++ dbLearnStar-webApp/src/main/java/dblearnstar/webapp/pages/admin/StudentGroupProgress.java	(revision 1a988e62762f18b3f96f34b6418117b19de8420d)
@@ -91,10 +91,4 @@
 	}
 
-	public Boolean getSolvedTaskByStudent() {
-		Boolean test = testManager.isTaskInTestInstanceSolvedByStudent(taskInTestInstance.getTaskInTestInstanceId(),
-				groupMember.getStudent().getStudentId());
-		return test;
-	}
-
 	public Float getAssessmentsForTaskForStudent() {
 		return testManager.getGradeForTaskInTestInstanceByStudent(taskInTestInstance.getTaskInTestInstanceId(),
@@ -106,20 +100,28 @@
 	}
 
-	public String getColorClass() {
-		Boolean solved = getSolvedTaskByStudent();
-		Float grade = getAssessmentsForTaskForStudent();
-		if (solved == null) {
-			if (grade != null) {
-				return " color-queryError ";
-			} else {
-				return " ";
-			}
+	public Integer getResultGrade() {
+		return (Integer) result[0];
+	}
+
+	public String getResultColorClass() {
+		Boolean shouldPass = (Boolean) result[1];
+		Boolean passed = (Boolean) result[2];
+
+		String colorClass = " ";
+		if (passed != null && passed) {
+			colorClass += " result-passed ";
+		} else if (passed != null && !passed) {
+			colorClass += " result-notpassed ";
 		} else {
-			if (solved) {
-				return " color-queryCorrect ";
-			} else {
-				return " color-queryError ";
-			}
+
 		}
+		if (shouldPass != null && shouldPass) {
+			colorClass += " result-queryCorrect ";
+		} else if (shouldPass != null && !shouldPass) {
+			colorClass += " result-queryError ";
+		} else {
+
+		}
+		return colorClass;
 	}
 
@@ -133,5 +135,13 @@
 
 	public List<TaskInTestInstance> getTaskInTestInstances() {
-		return testManager.getTasksInTestInstance(groupFocusOnTest.getTestInstance().getTestInstanceId());
+		return testManager.getTaskInTestInstancesByTestInstance(groupFocusOnTest.getTestInstance().getTestInstanceId());
+	}
+
+	@Property
+	private Object[] result;
+
+	public List<Object[]> getTestInstanceResultsByStudentSortedByTaskName() {
+		return testManager.getTestInstanceResultsByStudentSortedByTaskName(groupMember.getStudent(),
+				groupFocusOnTest.getTestInstance());
 	}
 
@@ -161,6 +171,5 @@
 
 	public String getTaskInTestInstanceTaskTitleTranslated() {
-		String translated = translationService.getTranslation("Task", "title",
-				taskInTestInstance.getTask().getTaskId(),
+		String translated = translationService.getTranslation("Task", "title", taskInTestInstance.getTask().getTaskId(),
 				persistentLocale.get().getLanguage().toLowerCase());
 		return (translated != null ? translated : taskInTestInstance.getTask().getTitle());
Index: dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManager.java
===================================================================
--- dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManager.java	(revision f043cd6404370461abed776ab6cb88b6f7abf56e)
+++ dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManager.java	(revision 1a988e62762f18b3f96f34b6418117b19de8420d)
@@ -80,5 +80,5 @@
 			long taskInTestInstanceId);
 
-	public List<TaskInTestInstance> getTasksInTestInstance(long testInstanceId);
+	public List<TaskInTestInstance> getTaskInTestInstancesByTestInstance(long testInstanceId);
 
 	public void recordActivityInTask(Person person, TaskInTestInstance taskInTestInstance, String type, String payload);
@@ -99,3 +99,5 @@
 
 	public List<TestCollection> getTestCollectionsWithTestInstances();
+
+	public List<Object[]> getTestInstanceResultsByStudentSortedByTaskName(Student student, TestInstance testInstance);
 }
Index: dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManagerImpl.java
===================================================================
--- dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManagerImpl.java	(revision f043cd6404370461abed776ab6cb88b6f7abf56e)
+++ dbLearnStar-webApp/src/main/java/dblearnstar/webapp/services/TestManagerImpl.java	(revision 1a988e62762f18b3f96f34b6418117b19de8420d)
@@ -120,5 +120,5 @@
 							where
 								s.studentId=:studentId and
-								(now() between ti2.scheduledFor and ti2.scheduledUntil or 
+								(now() between ti2.scheduledFor and ti2.scheduledUntil or
 								ti2.openForReviewByStudents=true)
 						)
@@ -392,5 +392,5 @@
 
 	@Override
-	public List<TaskInTestInstance> getTasksInTestInstance(long testInstanceId) {
+	public List<TaskInTestInstance> getTaskInTestInstancesByTestInstance(long testInstanceId) {
 		return UsefulMethods.castList(TaskInTestInstance.class, getEntityManager().createQuery("""
 				from TaskInTestInstance tti
@@ -500,5 +500,5 @@
 	@Override
 	public boolean accessToTaskInTestInstanceAllowed(Student student, TaskInTestInstance tti) {
-		//TODO: need a more appropriate implementation
+		// TODO: need a more appropriate implementation
 		return getTestInstancesForStudentByTestType(student.getStudentId(),
 				tti.getTestInstance().getTestTemplate().getTestType().getTestTypeId()).stream()
@@ -539,3 +539,32 @@
 	}
 
+	@Override
+	public List<Object[]> getTestInstanceResultsByStudentSortedByTaskName(Student student, TestInstance testInstance) {
+		try {
+			return getEntityManager()
+					.createNativeQuery(
+							"""
+									select
+									cast(max(sa.grade) as integer) max_grade,
+									max(case when sss.student_submit_solution_id is null then null when sss.evaluation_simple and sss.evaluation_complex
+									then 1 else 0 end)>0 should_pass,
+									max(case when sa.passed is not null and sa.passed then 1 when sa.passed is not null and not(sa.passed) then 0 else null end )>0 passed
+									from
+									task_in_test_instance titi
+									join task t on titi.task_id=t.task_id
+									left join student_started_test sst on sst.student_id=?
+									left join student_submit_solution sss on sss.task_in_test_instance_id=titi.task_in_test_instance_id and sss.student_started_test_id=sst.student_started_test_id
+									left join solution_assessment sa on sss.student_submit_solution_id=sa.student_submit_solution_id
+									where titi.test_instance_id=?
+									group by titi.task_in_test_instance_id, t.task_id, t.title, sst.student_id
+									order by t.title
+																""")
+					.setParameter(1, student.getStudentId()).setParameter(2, testInstance.getTestInstanceId())
+					.getResultList();
+		} catch (Exception e) {
+			logger.error(e.getMessage());
+			return null;
+		}
+	}
+
 }
Index: dbLearnStar-webApp/src/main/resources/META-INF/assets/site-overrides.css
===================================================================
--- dbLearnStar-webApp/src/main/resources/META-INF/assets/site-overrides.css	(revision f043cd6404370461abed776ab6cb88b6f7abf56e)
+++ dbLearnStar-webApp/src/main/resources/META-INF/assets/site-overrides.css	(revision 1a988e62762f18b3f96f34b6418117b19de8420d)
@@ -69,6 +69,23 @@
 
 .color-queryCorrect {
-	background: var(--color-correct);
+	background:  var(--color-correct);
 	color: black;
+}
+
+.result-queryError {
+	background: var(--color-incorrect);
+}
+
+.result-queryCorrect {
+	background:  var(--color-correct);
+}
+
+.result-passed {
+	font-weight: 900;
+	color: #a0ffa0;
+}
+
+.result-notpassed {
+	color: white;
 }
 
Index: dbLearnStar-webApp/src/main/resources/dblearnstar/webapp/pages/admin/StudentGroupProgress.tml
===================================================================
--- dbLearnStar-webApp/src/main/resources/dblearnstar/webapp/pages/admin/StudentGroupProgress.tml	(revision f043cd6404370461abed776ab6cb88b6f7abf56e)
+++ dbLearnStar-webApp/src/main/resources/dblearnstar/webapp/pages/admin/StudentGroupProgress.tml	(revision 1a988e62762f18b3f96f34b6418117b19de8420d)
@@ -20,6 +20,5 @@
 		<table class="table table-condensed  table-bordered">
 			<thead>
-				<th></th>
-				<th style="vertical-align: middle;"><p
+				<th colspan="2"  style="vertical-align: middle;"><p
 						style="text-align: right;">${message:Test-label}</p></th>
 				<th t:type="loop" t:source="selectedGroup.groupFocusOnTests"
@@ -35,5 +34,5 @@
 					<th t:type="loop" t:source="taskInTestInstances"
 						t:value="taskInTestInstance"
-						style="text-orientation: sideways; writing-mode: vertical-lr; font-size: 80%;">${taskInTestInstanceTaskTitleTranslated}</th>
+						style="text-orientation: sideways; writing-mode: vertical-lr; font-size: 80%;">${taskInTestInstanceTaskTitleTranslated} (${taskInTestInstance.points})</th>
 				</t:loop>
 				<th
@@ -47,8 +46,8 @@
 				<t:loop t:source="selectedGroup.groupFocusOnTests"
 					t:value="groupFocusOnTest">
-					<td t:type="loop" t:source="taskInTestInstances"
-						t:value="taskInTestInstance" style="width: 3em;"
-						class="${colorClass} centered-hv ">
-						${assessmentsForTaskForStudent}</td>
+					<td t:type="loop"
+						t:source="testInstanceResultsByStudentSortedByTaskName"
+						t:value="result" style="width: 3em;"
+						class="${resultColorClass} centered-hv ">${resultGrade}</td>
 				</t:loop>
 				<td>${groupMemberTotalPoints}</td>
