4 answers
Hi Kathy,
It's a bit complex. How do you define they are working on a case? What about email cases, when do they start, when do they stop?
You coudl create a button that agents would need to click when starting working on a case and when stopping working. This could create records in a custom object when starting and updating the same record when clicking on end.
You could then report on this object, however, it depends on the agents clicking the button...
We do this in our org, but we had to define really strict criteria for each case type (chats, emails, phone, web, etc), and we create/update records in a custom object, but we needed code to populate it, and it was quite complex to implement.