Nie dość, że nie założyłem tu konta, to jeszcze taka nazwa tematu… Przepraszam i proszę o jakieś zgrabne nazwanie.
Witam Cię drogi czytelniku, potencjalny wybawco.
Mam takie sobie zapytanie do bazy:
SELECT TeamName, count, teamrank FROM (
SELECT TeamName, COUNT(avg) AS count, SUM(avg)/COUNT(avg) AS teamrank
FROM players,rs_rank WHERE players.id=rs_rank.playerid
GROUP BY TeamName) as sub
WHERE sub.count>=3
ORDER BY sub.teamrank LIMIT 50
Wiem, że to niezbyt fachowe rzucać takimi hasłami, ale… Zapytanie liczy drużynowy ranking dla teamów, które mają w bazie sklasyfikowanych minimum 3 graczy. No, chyba że nie do końca je rozumiem.
Chciałbym, żeby liczyło ten ranking dla drużyn, które mają minimum trzech sklasyfikowanych osobników, ALE ranking był policzony tylko dla pierwszych trzech najlepszych wyników (tych z pola 'avg'). Dobry wynik, to niski wynik, więc wystarczy samo ORDER BY bez ASC, bo to chyba domyślnie, prawda?
Wynik tego query:
+--------------------------------+-------+------------------+
| TeamName | count | teamrank |
+--------------------------------+-------+------------------+
| $000CR | 3 | 178666.666666667 |
| $00f〩$fff+ $f00oेsे | 11 | 181258.636363636 |
| $000〠ĦěīЙΞĸēη〠 | 7 | 183809.714285714 |
| $F00ѕ$F30т$F60о$F90я$FC0м | 15 | 185466.733333333 |
| $FF6「$FC0тахі$FF6」 | 5 | 185887 |
| $f88~ΡеІісаиѕ~ | 4 | 190282 |
| $00d»ЯтА« | 4 | 191782 |
| $f0f.:$fffVrs$f0f:. | 6 | 193487.166666667 |
| $7b0ήρ | 12 | 193568.333333333 |
| $F00FF$fff.$000X-Fi|$fff | 6 | 193718 |
| $36fVøđΚα | 4 | 194769 |
| $ffeiaм。 | 14 | 195684.928571429 |
| $fffLord $f00Team | 11 | 195869.454545455 |
| $f00Ħ’$000я | 10 | 196087.3 |
| | 155 | 196823.8 |
| $d00ης | 11 | 198331 |
| NULL | 215 | 199531.302325581 |
+--------------------------------+-------+------------------+
Sam nawias:
+--------------------------------+-------+-----------------+
| TeamName | count | teamrank |
+--------------------------------+-------+-----------------+
| NULL | 215 | 199531.30232558 |
| | 155 | 196823.8 |
| $000〠ĦěīЙΞĸēη〠 | 7 | 183809.71428571 |
| $000CR | 3 | 178666.66666667 |
| $00d»ЯтА« | 4 | 191782 |
| $00f〩$fff+ $f00oेsे | 11 | 181258.63636364 |
| $06fѝФχ | 2 | 185487 |
| $093в$ff0ž$36fκ | 2 | 155282 |
| $36fVøđΚα | 4 | 194769 |
| $7b0ήρ | 12 | 193568.33333333 |
| $888*ฟのの* | 2 | 198077 |
| $d00ης | 11 | 198331 |
| $F00FF$fff.$000X-Fi|$fff | 6 | 193718 |
| $F00ѕ$F30т$F60о$F90я$FC0м | 15 | 185466.73333333 |
| $f00Ħ’$000я | 10 | 196087.3 |
| $f0f.:$fffVrs$f0f:. | 6 | 193487.16666667 |
| $f88~ΡеІісаиѕ~ | 4 | 190282 |
| $FF6「$FC0тахі$FF6」 | 5 | 185887 |
| $ffeiaм。 | 14 | 195684.92857143 |
| $fffLord $f00Team | 11 | 195869.45454545 |
+--------------------------------+-------+-----------------+
mysql> show tables;
+-----------------+
| Tables_in_aseco |
+-----------------+
| challenges |
| match_details |
| match_main |
| players |
| players_extra |
| records |
| rs_karma |
| rs_rank |
| rs_times |
| teammembers |
| teams |
| votes |
+-----------------+
mysql> describe players;
+------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------------------+----------------+
| Id | mediumint(9) | NO | PRI | NULL | auto_increment |
| Login | varchar(50) | NO | UNI | | |
| Game | varchar(3) | NO | MUL | | |
| NickName | varchar(100) | NO | | | |
| Nation | varchar(3) | NO | | | |
| UpdatedAt | datetime | NO | | 0000-00-00 00:00:00 | |
| Wins | mediumint(9) | NO | | 0 | |
| TimePlayed | mediumint(9) | NO | | 0 | |
| TeamName | char(60) | YES | | NULL | |
+------------+--------------+------+-----+---------------------+----------------+
mysql> describe rs_rank;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| playerID | mediumint(9) | NO | MUL | 0 | |
| avg | float | NO | | 0 | |
+----------+--------------+------+-----+---------+-------+
mysql> select teamname from players limit 10;
+----------------------------+
| teamname |
+----------------------------+
| NULL |
| $00f〩$fff+ $f00oेsे |
| NULL |
| $000〠ĦěīЙΞĸēη〠 |
| NULL |
| $00f〩$fff+ $f00oेsे |
| NULL |
| |
| NULL |
| NULL |
+----------------------------+
mysql> select avg from rs_rank limit 6;
+--------+
| avg |
+--------+
| 195436 |
| 174000 |
| 200000 |
| 185026 |
| 200000 |
| 198974 |
+--------+
Nie znam MySQL'a, ale do tej pory jakoś sobie z nim radziłem. Wielu różnych wariantów/pomysłów już próbowałem. W razie czego tyle tych codes. Czegoś jeszcze potrzeba?