diff --git a/games/templates/stats.html b/games/templates/stats.html
index efbec13..c6977b9 100644
--- a/games/templates/stats.html
+++ b/games/templates/stats.html
@@ -57,6 +57,12 @@
Most sessions |
{{ highest_session_count }} ({{ highest_session_count_game }}) |
+
+ Highest session average |
+
+ {{ highest_session_average }} ({{ highest_session_average_game }})
+ |
+
Purchases
diff --git a/games/views.py b/games/views.py
index 8fbda16..07ad879 100644
--- a/games/views.py
+++ b/games/views.py
@@ -2,7 +2,7 @@ from datetime import datetime, timedelta
from typing import Any, Callable
from django.core.exceptions import ObjectDoesNotExist
-from django.db.models import Count, ExpressionWrapper, F, Prefetch, Q, Sum, fields
+from django.db.models import Avg, Count, ExpressionWrapper, F, Prefetch, Q, Sum, fields
from django.db.models.functions import Extract, TruncDate
from django.http import (
HttpRequest,
@@ -397,6 +397,14 @@ def stats(request, year: int = 0):
)
.values("id", "name", "total_playtime")
)
+ highest_session_average_game = (
+ Game.objects.filter(edition__purchase__session__in=this_year_sessions)
+ .annotate(
+ session_average=Avg("edition__purchase__session__duration_calculated")
+ )
+ .order_by("-session_average")
+ .first()
+ )
top_10_games_by_playtime = games_with_playtime.order_by("-total_playtime")[:10]
for game in top_10_games_by_playtime:
game["formatted_playtime"] = format_duration(game["total_playtime"], "%2.0H")
@@ -467,6 +475,10 @@ def stats(request, year: int = 0):
"longest_session_game": longest_session.purchase.edition.name,
"highest_session_count": game_highest_session_count.session_count,
"highest_session_count_game": game_highest_session_count.name,
+ "highest_session_average": format_duration(
+ highest_session_average_game.session_average, "%2.0Hh %2.0mm"
+ ),
+ "highest_session_average_game": highest_session_average_game,
}
request.session["return_path"] = request.path