You cannot (should not) put non-aggregates in the SELECT
line of a GROUP BY
query.
I would however like access the one of the non-aggregate
You have to have a join because the aggregate function max retrieves many rows and chooses the max. So you need a join to choose the one that the agregate function has found.
To put it a different way how would you expect the query to behave if you replaced max with sum?
An inner join might be more efficient than your sub query though.