| なんとか、大会の順位表を対戦結果をもとにSQL一発で出すことに成功。
おなじものをperlで組んだら、たぶんかなりの行数になると思うんだけど、それが1行で書けちゃうとは。SQLってすごい。
1行って言ってもこんな感じだけど。
SELECT rs.player1, (select nick from off_player op where rs.player1=op.user_id) as nick, sum( rs.point ) as pts, AVG((CASE WHEN ((SELECT sum(rs1.point) from off_result rs1 where rs1.player1=rs.player2 and rs1.tornament_id=3) / (3*(SELECT MAX(round) from off_result where tornament_id=3))) < 0.33 THEN 0.33 ELSE ((SELECT sum(rs1.point) from off_result rs1 where rs1.player1=rs.player2 and tornament_id=3) / (3*(SELECT MAX(round) from off_result where tornament_id=3))) END)) as opo from off_result rs where rs.tornament_id=3 group by rs.player1 order by pts DESC, opo DESC;
|