def _get_global_stats_result(self, query, playlist, rank, session, with_rank=True): if with_rank: query = query.with_rank(rank) if not ignore_filtering(): query.with_playlists([playlist]) query = query.build_query(session) query = query.group_by(PlayerGame.player) if ignore_filtering(): query = query.subquery() else: query = query.filter(PlayerGame.game != "").filter(PlayerGame.time_in_game > 0).having( func.count(PlayerGame.player) > 5).subquery() return session.query(func.avg(query.c.avg), func.stddev_samp(query.c.avg)).first()
def __init__(self, player_wrapper: PlayerWrapper): super().__init__() self.player_wrapper = player_wrapper # this Object needs to be pooled per a session so only one is used at a time self.player_stats_filter = QueryFilterBuilder() if not ignore_filtering(): self.player_stats_filter.with_relative_start_time(days_ago=30).with_safe_checking().sticky()