A palavra
rank
é uma palavra reservada no MySql 8. Portanto, use outro nome de alias ou dê um backtick no nome de alias.
E no MySql 8 você pode usar funções de janela
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;