You can't add strings: If I cut out the other bits it more obvious what you have done:
SELECT ... ,SUM(CASE WHEN ... THEN 'YES' ELSE 'NO' END) AS BONUS ...
You are trying to sum a series of "Yes" and "No" strings, which just won't work: the SUM function expects a numeric value. Probably what you want to do is is a JOIN to combine your GROUPED data and add info to it - but I suspect that your GROUP BY clause has too many columns listed as well. I think you probably need to rethink what you are trying to do as this looks as bit "throw it together and hope" instead of considered SQL code.
To add to that, why are you converting a numeric value to a string and then trying to compare it to a number in a string? String comparisons are performed character by character with the result of the whole comparison being decided by the first different character. So '3' is greater than '25000', and '100000000' is less than '25000'.
Always compare numbers as numbers!