SQL Server does integer arithmetic, so 1/2 is 0 not 0.5.
You can write this by using a non-integer in the case expressions:
(SUM(Case when FinalApprovalDt is not null and ContractPayoutAmt > 0 Then 100.0 else 0 End) /
SUM(Case when FinalApprovalDt is not null then 1 end)
) As WriteRate
Notice that I removed the else from the denominator. This helps prevent divide-by-zero errors.
You can also write this without an explicit division as:
AVG(Case when FinalApprovalDt is not null and ContractPayoutAmt > 0 Then 100.0
when FinalApprovalDt is not null then 0
End) as WriteRate
This does an average over all rows where the FinalApprovalDt is not null, using the logic for the other column.