diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue
index cd968ba434855dfc61ed094c955c90f382bd030b..a1fd5ff0e8c1c872e04c3bd824a0ba503b933368 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/statistics/StatisticsForPersonPage.vue
@@ -46,10 +46,10 @@
                 v-for="item in items"
                 :key="item.id"
                 ripple
-                :readonly="!item.canEdit"
+                :readonly="!showEdit(item)"
               >
                 <v-expansion-panel-header
-                  :hide-actions="!item.canEdit"
+                  :hide-actions="!showEdit(item) && !showDelete(item)"
                   disable-icon-rotate
                 >
                   <template #actions>
@@ -125,12 +125,19 @@
                       </v-list-item-content>
                     </v-col>
                     <v-col cols="12" md="6" class="pa-0">
-                      <v-list-item-action class="full-width justify-md-end">
+                      <v-list-item-action
+                        class="flex-row full-width justify-md-end ma-0 align-center fill-height"
+                      >
                         <!-- chips: absences & extraMarks -->
                         <absence-reason-chip
                           v-if="item.absenceReason"
                           :absence-reason="item.absenceReason"
                         />
+                        <tardiness-chip
+                          v-if="item.tardiness"
+                          :tardiness="item.tardiness"
+                          class="ms-1"
+                        />
                         <extra-mark-chip
                           v-if="item.extraMark"
                           :extra-mark="item.extraMark"
@@ -199,10 +206,12 @@ import {
 import ExtraMarkChip from "../../extra_marks/ExtraMarkChip.vue";
 import { MODE } from "./modes.js";
 import PersonalNoteChip from "../personal_notes/PersonalNoteChip.vue";
+import TardinessChip from "../absences/TardinessChip.vue";
 
 export default {
   name: "StatisticsForPersonPage",
   components: {
+    TardinessChip,
     PersonalNoteChip,
     ActiveSchoolTermSelect,
     ExtraMarkChip,
@@ -277,6 +286,16 @@ export default {
         },
       });
     },
+    showEdit(item) {
+      // Notes with ExtraMark cannot be edited, only deleted
+      return (
+        item.canEdit && (item.note || item.absenceReason || item.tardiness)
+      );
+    },
+    showDelete(item) {
+      // Only ExtraMarks can be deleted
+      return item.canDelete && item.extraMark;
+    },
   },
 };
 </script>
diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py
index 604cda6cd229533086533d855563a892f440d572..284d8da2d3a2570e57ae902b14302048eba7f3b8 100644
--- a/aleksis/apps/alsijil/schema/__init__.py
+++ b/aleksis/apps/alsijil/schema/__init__.py
@@ -309,8 +309,8 @@ class Query(graphene.ObjectType):
         school_term = get_active_school_term(info.context)
         return graphene_django_optimizer.query(
             ParticipationStatus.objects.filter(
+                Q(absence_reason__isnull=False) | Q(tardiness__isnull=False),
                 person=person,
-                absence_reason__isnull=False,
                 datetime_start__date__gte=school_term.date_start,
                 datetime_end__date__lte=school_term.date_end,
             ).order_by("-related_documentation__datetime_start"),