diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index a79287ec7afe8b8aeecdbe655fe1333a74430e0b..556b6f5b29fef2433c6f082a3af3a7b14e188bc2 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -13,6 +13,7 @@ Fixed
 ~~~~~
 
 * Students were displayed multiple times in class register views.
+* Absences were counted multiple times in some class register views.
 
 `2.1`_ - 2022-06-25
 -------------------
diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py
index 5b0e5ac4b1337dfdc44c97470c36cd954fc7b915..b53f87f997b9f4b62336ef594fcc2676cc00a983 100644
--- a/aleksis/apps/alsijil/model_extensions.py
+++ b/aleksis/apps/alsijil/model_extensions.py
@@ -434,6 +434,7 @@ def generate_person_list_with_class_register_statistics(
             "filtered_personal_notes",
             filter=Q(filtered_personal_notes__absent=True)
             & ~Q(filtered_personal_notes__excuse_type__count_as_absent=False),
+            distinct=True,
         ),
         excused=Count(
             "filtered_personal_notes",
@@ -442,6 +443,7 @@ def generate_person_list_with_class_register_statistics(
                 filtered_personal_notes__excused=True,
             )
             & ~Q(filtered_personal_notes__excuse_type__count_as_absent=False),
+            distinct=True,
         ),
         excused_without_excuse_type=Count(
             "filtered_personal_notes",
@@ -450,15 +452,16 @@ def generate_person_list_with_class_register_statistics(
                 filtered_personal_notes__excused=True,
                 filtered_personal_notes__excuse_type__isnull=True,
             ),
+            distinct=True,
         ),
         unexcused=Count(
             "filtered_personal_notes",
             filter=Q(filtered_personal_notes__absent=True, filtered_personal_notes__excused=False),
+            distinct=True,
         ),
         tardiness=Sum("filtered_personal_notes__late"),
         tardiness_count=Count(
-            "filtered_personal_notes",
-            filter=Q(filtered_personal_notes__late__gt=0),
+            "filtered_personal_notes", filter=Q(filtered_personal_notes__late__gt=0), distinct=True
         ),
     )