]> git.sesse.net Git - wloh/blobdiff - www/rating.pl
Show average ratings for each subdivision.
[wloh] / www / rating.pl
index 89c75b96e2ee89a6e64f862fd61bc8757ce5c096..26ced551e0a0c03ce50dade5ed14ae3fa2165ee8 100755 (executable)
@@ -66,12 +66,12 @@ printf <<"EOF", $params{-3}, $match_stddev;
 
     <ul>
       <li>MLE-basert modell med én skalar (styrke) per spiller og to globale skalarer (begge standardavvik, se under), løst med syklisk MM (minorization-maximization). Antall iterasjoner før konvergens: $params{-1}.</li>
-      <li>Rimelighetfunksjon, prior: Normalfordeling med µ=1500, &sigma;=%.1f (est.)</li>
+      <li>Rimelighetfunksjon, prior: Normalfordeling med µ=500, &sigma;=%.1f (est.)</li>
       <li>Rimelighetfunksjon, per kamp: Normalfordeling med µ=(score1 - score2), &sigma;=%.1f (est.)</li>
       <li>Vekting: Inneværende sesong samt de tre siste vektes fullt ut
        (likt med prior). Deretter eksponentielt synkende vekting, med
         halveringstid på tre sesonger. Spill som er registrert med
-        150-0, 0-150 eller 150-150 ignoreres.</li>
+        0-0, 150-0, 0-150 eller 150-150 ignoreres.</li>
     </ul>
 
     <h2>Divisjonsoversikt</h2>
@@ -84,8 +84,23 @@ printf <<"EOF", $params{-3}, $match_stddev;
       </tr>
 EOF
 
-$q = $dbh->prepare('SELECT divisjon,AVG(rating) AS avg_rating,STDDEV(rating) AS stddev_rating FROM ratings NATURAL JOIN siste_divisjon GROUP BY divisjon ORDER BY divisjon');
-$q->execute;
+my $season = wloh_common::get_max_season($dbh);
+
+# Pick up all the subdivisions' ratings.
+my %subdivision_ratings = ();
+$q = $dbh->prepare('SELECT divisjon, avdeling, serie_id, AVG(rating) AS avg_rating FROM ratings NATURAL JOIN siste_divisjon WHERE sesong=? GROUP BY divisjon, avdeling, serie_id ORDER BY divisjon, avdeling');
+$q->execute($season);
+
+while (my $ref = $q->fetchrow_hashref) {
+       my $division = $ref->{'divisjon'};
+       my $rating = $ref->{'avg_rating'};
+       my $id = $ref->{'serie_id'};
+
+       push @{$subdivision_ratings{$division}}, [ $id, $rating ];
+}
+
+$q = $dbh->prepare('SELECT divisjon,AVG(rating) AS avg_rating,STDDEV(rating) AS stddev_rating FROM ratings NATURAL JOIN siste_divisjon WHERE sesong=? GROUP BY divisjon ORDER BY divisjon');
+$q->execute($season);
 
 my $i = 0;
 while (my $ref = $q->fetchrow_hashref) {
@@ -97,6 +112,11 @@ while (my $ref = $q->fetchrow_hashref) {
        printf "        <th>%d.</th>\n", $ref->{'divisjon'};
        printf "        <td class=\"num\">%.1f</td>\n", $ref->{'avg_rating'};
        printf "        <td class=\"num\">%.1f</td>\n", $ref->{'stddev_rating'};
+
+       for my $arr (@{$subdivision_ratings{$ref->{'divisjon'}}}) {
+               my ($id, $rating) = @$arr;
+               printf "        <td class=\"num\"><a href=\"http://wordfeud.aasmul.net/serie-%d\">%.1f</a></td>\n", $id, $rating;
+       }
        print "      </tr>\n";
 }