prova questo:
SELECT district, id, COUNT(b.district)
FROM adverts a INNER JOIN adverts b
ON a.district = b.district
WHERE b.id > a.id
GROUP BY district, id
HAVING COUNT(b.district) < 5
ORDER BY district, id DESC
per definizione, Joins
sono più veloci rispetto a subqueries
.