El ifnull previene el caso que existan registros en subciudades que sean nulos, ya que no pertenecen a un registro de ciudad con el fin de que el count se haga sobre todos los registros.
Las funciones de agrupación, siempre ignoran valores nulos ya sea contando (count) o sumando (sum) o promediendo (avg).
Me alegra que te haya funcionado.