GROUP BY will group records by whatever you specify.
This means that all the fields that you don't 'group by' can have multiple values for each unique value of the field that you 'group by'.
for ex; if you have a table of customerids and orderids, one customer can have several orders, so grouping by userid will give several orderids per userid. That means you cannot select orderid, because SQL does not know which of the many values you want.
You have to select an aggregate of orderid, something that will take all values and process them into a new value.
"n this case, am I supposed to group on each field in 'a'? "
No, because that would void the 'group by a.id'. Grouping by all fields is the same as not grouping at all.
The thing is that one value of a.id can theoretically have many possible values for the other fields of a.
You can probably solve this by doing a self-join, where you use a.id in the group by, and then join again with a:
SELECT copy_of_a.*
FROM a blaJOIN b ON bla LEFT JOIN c on bla, a AS copy_of_a WHERE a.id = copy_of_a.id