Otras bases de datos (por ejemplo, MS SQL Server) no le permiten mezclar valores agregados con valores no agregados, solo porque obtendría un resultado incorrecto.
Entonces, si desea valores no agregados del registro donde estaba el valor máximo, únase a la tabla nuevamente:
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