diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index e8e135a04d178ff24bf04795d16e47b114d7487b..7f8134e653fc6b2d594c24a107c063b743425c3b 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -492,13 +492,12 @@ def my_students(request: HttpRequest) -> HttpResponse:
     context = {}
     relevant_groups = (
         request.user.person.get_owner_groups_with_lessons()
+        .annotate(has_parents=Exists(Group.objects.filter(child_groups=OuterRef("pk"))))
         .filter(members__isnull=False)
+        .order_by("has_parents", "name")
         .prefetch_related("members")
         .distinct()
     )
-    relevant_groups = sorted(
-        relevant_groups, key=lambda g: g.name if g.parent_groups else "0"
-    )
 
     new_groups = []
     for group in relevant_groups: