D'autres bases de données (par exemple, MS SQL Server) ne vous permettent pas de mélanger des valeurs agrégées avec des valeurs non agrégées, simplement parce que vous obtiendriez un mauvais résultat.
Donc, si vous voulez des valeurs non agrégées à partir de l'enregistrement où se trouvait la valeur maximale, rejoignez à nouveau la table :
select x.user, y.col1, y.col2, x.col3
from (
select user, max(col3) as col3
from table
group by user
) x
inner join table y on y.user = x.user and y.col3 = x.col3
order by x.user