X-Git-Url: https://git.sesse.net/?p=ccbs;a=blobdiff_plain;f=sql%2Fccbs.sql;h=d48fbeb04c33385c27929a10defee15003bd842d;hp=4c42d56187a4c01f185ead62367b10f081503ff5;hb=23a9b9ce42cd6a8c5752b217bccb581425267fdb;hpb=bf9387900ec73b0703128d8d2aa11996509006b8 diff --git a/sql/ccbs.sql b/sql/ccbs.sql index 4c42d56..d48fbeb 100644 --- a/sql/ccbs.sql +++ b/sql/ccbs.sql @@ -224,3 +224,35 @@ $$ LANGUAGE SQL STABLE RETURNS NULL ON NULL INPUT; + +-- get_max_score_for_players(tournament, round, playmode) +CREATE FUNCTION get_max_score_for_players(integer, integer, varchar) RETURNS SETOF max_score + AS $$ + SELECT player, + ( + SELECT feetrating + FROM songratings + WHERE machine=( -- only find songs on the machine we use + SELECT machine FROM tournaments WHERE tournament=$1 + ) + AND song NOT IN ( -- not a song that has been in elimination or seeding + SELECT song FROM scores + WHERE tournament=$1 + AND song IS NOT NULL + AND parallel=0 + AND chosen='f' + ) + AND (player,song) NOT IN ( -- not a song the player has chosen before, or is a random song in this round + SELECT player,song FROM scores + WHERE tournament=$1 + AND song IS NOT NULL + AND ( chosen='t' OR round=$2 ) + ) + AND playmode=$3 + ORDER BY feetrating DESC LIMIT 1 + ) * 1000 AS max_score FROM tournamentparticipation; +$$ + LANGUAGE SQL + STABLE + RETURNS NULL ON NULL INPUT; +