SELECT Temp.rating, Temp.avgage
FROM
( SELECT S.rating, AVG(S.age) AS avgage
FROM Sailors S
GROUP BY S.rating
) AS Temp
WHERE Temp.avgage =
( SELECT MIN (Temp.avgage)
FROM Temp --- the error is here
)
Depending on how you want to handle ties, you could just use:
SELECT Temp.rating, Temp.avgage
FROM
( SELECT S.rating, AVG(S.age) AS avgage
FROM Sailors S
GROUP BY S.rating
) AS Temp
ORDER BY Temp.avgage
LIMIT 1
or the simpler equivalent:
SELECT S.rating, AVG(S.age) AS avgage
FROM Sailors S
GROUP BY S.rating
ORDER BY avgage
LIMIT 1
or this one (that shows all tied results):
SELECT Temp.rating, Temp.avgage
FROM
( SELECT S.rating, AVG(S.age) AS avgage
FROM Sailors S
GROUP BY S.rating
) AS Temp
WHERE Temp.avgage =
( SELECT AVG(S.age) AS avgage
FROM Sailors S
GROUP BY S.rating
ORDER BY avgage
LIMIT 1
)