Extra where clause is needed
If you narrow your selection to retrieve total_rows, you should also narrow the selection of the complains to that period of time. Then you should come up with correct percentages. So , al you need to do is add an extra where clause.
ROUND(COUNT(a.complaint_cause)/b.total_rows *100 ,2)
FROM complaints a,
AND '15-October-00') b
GROUP BY a.complaint_cause, b.total_rows;
Let me know if this worked.