# HG changeset patch # User Laman # Date 2018-06-08 00:30:35 # Node ID 0aeebf95bfe7c7ec73c8dbb502ba7951c21fe811 # Parent 19978bbb3d69e4ae03d7abd2525aa6e927d44d31 dotaz playersProgress, úprava timeToPeak diff --git a/queries.py b/queries.py --- a/queries.py +++ b/queries.py @@ -202,10 +202,25 @@ def fetchByRating(strongerThan,country=" print("\t".join([str(x) for x in rec])) +def _tournamentsToPeak(): + """Vrací slovník {pin: počet_turnajů_k_dosažení_max_ratingu}""" + query="""select pin,rating_after,max_rating from players_performance_tournaments join (select pin as sub_pin,max(rating_after) as max_rating from players_performance group by pin) on pin=sub_pin order by datum asc""" + + res=cursor.execute(query) + players=dict() + closed=set() + for (pin,rating,maxRating) in res: + tc=players.get(pin,0) + if pin not in closed: players[pin]=tc+1 + if rating==maxRating: closed.add(pin) + + return players + + def timeToPeak(): """Jakého hráči dosáhli maximálního ratingu a jak dlouho jim to trvalo. - Uvažuje hráče začínající s ratingem<=600 a s vrcholem před 1.1.2017.""" + Uvažuje hráče začínající s ratingem<=600.""" # join on pin, max_rating může duplikovat řádky, když měl hráč stejný max_rating vícekrát. # proto ten ošklivý vnější group by :-ú query=""" @@ -213,13 +228,52 @@ def timeToPeak(): from players_performance_tournaments as ppt join (select pin,min(rating_before) as min_rating,max(rating_after) as max_rating,min(datum) as _min_datum from players_performance_tournaments group by pin having min_rating<=600) as subq on ppt.pin=subq.pin and ppt.rating_after=max_rating group by ppt.pin - having peak_datum