Files @ e9a044cb8ce8
Branch filter:

Location: EGD-mine/queries.py - annotation

Laman
timeRank vrací jméno, upřesnění yearByCountry
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
d72a89609095
d72a89609095
d72a89609095
d72a89609095
c41a90c1ee53
bc762fdfee0f
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
d72a89609095
d72a89609095
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
e9a044cb8ce8
d72a89609095
d72a89609095
e9a044cb8ce8
c41a90c1ee53
e9a044cb8ce8
e9a044cb8ce8
e9a044cb8ce8
c41a90c1ee53
e9a044cb8ce8
c41a90c1ee53
e9a044cb8ce8
e9a044cb8ce8
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
c41a90c1ee53
d72a89609095
bc762fdfee0f
d72a89609095
d72a89609095
d72a89609095
e9a044cb8ce8
d72a89609095
d72a89609095
e9a044cb8ce8
e9a044cb8ce8
e9a044cb8ce8
d72a89609095
d72a89609095
d72a89609095
d72a89609095
d72a89609095
d72a89609095
d72a89609095
6127b170f21c
bc762fdfee0f
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
6127b170f21c
c41a90c1ee53
c41a90c1ee53
9c927dc379bc
bc762fdfee0f
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
9c927dc379bc
c41a90c1ee53
c41a90c1ee53
8d852e1a7103
bc762fdfee0f
8d852e1a7103
8d852e1a7103
8d852e1a7103
8d852e1a7103
8d852e1a7103
8d852e1a7103
8d852e1a7103
8d852e1a7103
6127b170f21c
6127b170f21c
c41a90c1ee53
d72a89609095
6127b170f21c
6127b170f21c
9c927dc379bc
8d852e1a7103
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)