I didn't know such syntax even exists in oracle, would have guess it will throw an error c.count(message_id) unknown... Anyway,if you want to do something with a column, that exists in more then one table in your query, you have to specify which column you want to take, just like you did on your where
clause. So you have two places, 1) the count 2) the group by clause.
SELECT S.MESSAGE_ID, S.USERNAME, count(c.MESSAGE_ID)
FROM MESSAGE S
INNER JOIN MESSAGE_LIKE C
ON (S.MESSAGE_ID=C.MESSAGE_ID )
GROUP BY S.MESSAGE_ID,S.username;
Also, you have another issue with your query which is that in ORACLE
you have to specify in the group by clause every column that you specified on the select, and is not being used with an aggregation function.
And lastly, I've changed your join syntax from implicit(comma separated) to explicit join syntax. Please avoid this join syntax as it will lead to mistakes when joining more then two tables/left joining. Explicit join syntax are easier to follow.