Since MySQL does not have analytic functions you can fake it with GROUP_CONCAT
:
SELECT
Continent,
SUBSTRING_INDEX( CONCAT( GROUP_CONCAT(Country ORDER BY Population DESC), '|'), '|', 1) AS Country,
SUBSTRING_INDEX( CONCAT( GROUP_CONCAT(Population ORDER BY Population DESC), ','), ',', 1) AS Population
FROM Populations
GROUP BY Continent;
Alternatively you can use:
SELECT
p.Continent,
p.Country,
p.Population
FROM Populations p
INNER JOIN
(
SELECT Continent,
MAX( Population ) AS max_pop
FROM Populations
GROUP BY Continent
) m
ON ( p.continent = m.continent
AND p.population = m.max_pop )
GROUP BY Continent;
Or:
SELECT
p.Continent,
p.Country,
p.Population
FROM Populations p
WHERE p.population =
(
SELECT MAX( Population )
FROM Populations m
WHERE p.continent = m.continent
);
SQLFIDDLE