Case overcounting what is expected
COUNT before JOINing, else you will be counting the result of the JOIN.
Possibly it is as simple as putting the C counts in the C subquery; ditto for O.  At that point, the subqueries may as well deliver only counts, not all the other columns.  And, then, why JOIN?