Files
@ e9a044cb8ce8
Branch filter:
Location: EGD-mine/queries.py
e9a044cb8ce8
4.2 KiB
text/x-python
timeRank vrací jméno, upřesnění yearByCountry
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | from egd import connection
cursor=connection.cursor()
def yearStart(year):
return "{0}-01-01".format(year)
def playerYear(name,year):
"""Výsledky hráče s daným jménem pro daný rok."""
query="""
select name, datum, win_count, game_count, rating_after, rating_after-rating_before
from players natural join players_performance as pp join tournaments as ts on pp.tournament_code=ts.code
where name=? and datum>=date(?) and datum<date(?)
order by datum asc
"""
date1=yearStart(year)
date2=yearStart(year+1)
res=cursor.execute(query,(name,date1,date2))
print("jméno\tdatum\tpočet výher\tpočet partií\trating po turnaji\tzměna")
for rec in res:
print("\t".join([str(x) for x in rec]))
def yearByCountry(year):
"""Počty hráčů s turnajem odehraným v daném roce, dělené podle země původu. Při změně příslušnosti se hráč započítá oběma zemím."""
date1=yearStart(year)
date2=yearStart(year+1)
# co hráči, kteří změní zemi?
query="""
select p_country_code,count(pin) from (
select pin,count(*),p_country_code from
players_performance_tournaments
where datum>=date(?) and datum<date(?)
group by pin,p_country_code
)
group by p_country_code
order by p_country_code asc;
"""
res=cursor.execute(query,(date1,date2))
print("kód země\tpočet aktivních hráčů")
for rec in res:
print("\t".join([str(x) for x in rec]))
def timeRank(year,country):
"""Výpis hráčů dané země aktivních v daném roce."""
date1=yearStart(year)
date2=yearStart(year+1)
query="""
select ppt.pin,date(?)-min_datum-1,min_datum,ppt.rating_after as rating,name
from
(select pin,min(datum) as min_datum,max(datum) as max_datum from players_performance_tournaments where datum<date(?) group by pin having max_datum>=date(?)) as subq
join players_performance_tournaments as ppt on subq.pin=ppt.pin and subq.max_datum=ppt.datum natural join players
where ppt.p_country_code=?
order by rating desc"""
res=cursor.execute(query,(date2,date2,date1,country))
print("pin\tcelé roky hraní\tprvní turnaj\trating")
for rec in res:
print("\t".join([str(x) for x in rec]))
def populationStrength(year,country):
"""Rozdělení populace země v daném roce podle ratingu (po stovkách). Uvažují se pouze aktivní hráči."""
date1=yearStart(year)
date2=yearStart(year+1)
query="""
select round((rating_after-50)/100)*100 as rating, count(ppt.pin)
from players_performance_tournaments as ppt
join (select pin,max(datum) as max_datum from players_performance_tournaments where datum>=date(?) and datum<date(?) and p_country_code=? group by pin) as subq on ppt.pin=subq.pin and ppt.datum=subq.max_datum
group by rating
order by rating desc
"""
res=cursor.execute(query,(date1,date2,country))
print("rating\tpočet hráčů s takovým a vyšším ratingem")
for rec in res:
print("\t".join([str(x) for x in rec]))
def populationAge(year,country):
"""Rozdělení populace země v daném roce podle doby hraní (celých let od prvního turnaje). Uvažují se pouze aktivní hráči."""
date1=yearStart(year)
date2=yearStart(year+1)
query="""
select date(?)-min_datum-1 as playing_years,count(pin)
from (
select ppt1.pin,min(ppt1.datum) as min_datum
from players_performance_tournaments as ppt1
join players_performance_tournaments as ppt2 on ppt1.pin=ppt2.pin
where ppt2.datum>=date(?) and ppt2.datum<date(?) and ppt1.p_country_code=?
group by ppt1.pin
)
group by playing_years"""
res=cursor.execute(query,(date2,date1,date2,country))
print("celé roky hraní\tpočet hráčů")
for rec in res:
print("\t".join([str(x) for x in rec]))
def tournamentAttendance(year):
"""Návštěvnosti turnajů za daný rok, dělené podle země konání."""
date1=yearStart(year)
date2=yearStart(year+1)
query="""select country_code,sum(player_count) from tournaments where datum>=date(?) and datum<date(?) group by country_code"""
res=cursor.execute(query,(date1,date2))
print("kód země\tpočet hráčů na turnajích")
for rec in res:
print("\t".join([str(x) for x in rec]))
# playerYear("Kotowski Jaroslav",2017)
# yearByCountry(2017)
# timeRank(2017,"CZ")
# populationStrength(2017,"CZ")
# populationAge(2017,"CZ")
# tournamentAttendance(2010)
|