diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index 84c12a8e2e6354ec1208537dc7a31a7f142f71b6..d8aebb32d83981e79b14d1c2cfe5064bb17c0305 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -4,7 +4,7 @@ from typing import Optional
 from aleksis.apps.chronos.managers import TimetableType
 from aleksis.apps.chronos.util.chronos_helpers import get_el_by_pk
 from django.core.exceptions import PermissionDenied
-from django.db.models import Count, Exists, OuterRef, Q, Sum
+from django.db.models import Count, Exists, F, OuterRef, Q, Subquery, Sum
 from django.http import Http404, HttpRequest, HttpResponse, HttpResponseNotFound
 from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse
@@ -166,36 +166,40 @@ def week_view(
 
     if lesson_periods:
         # Aggregate all personal notes for this group and week
-        lesson_periods_pk = lesson_periods.values_list("pk", flat=True)
         persons = (
             Person.objects.filter(is_active=True)
-            .filter(member_of__lessons__lesson_periods__in=lesson_periods_pk)
+            .filter(member_of__lessons__lesson_periods__in=lesson_periods)
             .distinct()
             .prefetch_related("personal_notes")
             .annotate(
                 absences_count=Count(
-                    "personal_notes__absent",
+                    "personal_notes",
                     filter=Q(
-                        personal_notes__lesson_period__in=lesson_periods_pk,
+                        personal_notes__lesson_period__in=lesson_periods,
                         personal_notes__week=wanted_week.week,
                         personal_notes__absent=True,
                     ),
+                    distinct=True,
                 ),
                 unexcused_count=Count(
-                    "personal_notes__absent",
+                    "personal_notes",
                     filter=Q(
-                        personal_notes__lesson_period__in=lesson_periods_pk,
+                        personal_notes__lesson_period__in=lesson_periods,
                         personal_notes__week=wanted_week.week,
                         personal_notes__absent=True,
                         personal_notes__excused=False,
                     ),
+                    distinct=True,
                 ),
-                tardiness_sum=Sum(
-                    "personal_notes__late",
-                    filter=Q(
-                        personal_notes__lesson_period__in=lesson_periods_pk,
+                tardiness_sum=Subquery(
+                    Person.objects.filter(
+                        pk=OuterRef("pk"),
+                        personal_notes__lesson_period__in=lesson_periods,
                         personal_notes__week=wanted_week.week,
-                    ),
+                    )
+                    .distinct()
+                    .annotate(tardiness_sum=Sum("personal_notes__late"))
+                    .values("tardiness_sum")
                 ),
             )
         )