Le mot rank
est un mot réservé dans MySql 8.
Utilisez donc un autre nom d'alias ou cochez le nom d'alias.
Et dans MySql 8, vous pouvez utiliser les fonctions de fenêtre
SELECT
mapname,
DENSE_RANK() OVER (PARTITION BY mapname, zonegroup, steamid, style ORDER BY runtime DESC) AS `rank`,
COUNT(*) OVER (PARTITION BY mapname, zonegroup, steamid, style) AS total
FROM ck_bonus
WHERE steamid = '%s' AND style = %i;