The trick to doing this calculation is going to be the Correlation ID on the records, because that will allow you to tie "agent" call legs back to the incoming call leg to the Call Queue. By grouping the legs by Correlation ID, you can do the following:
Abandoned in Queue = Incoming leg with no Agent leg at all
Abandoned while ringing agent = Incoming leg with no Answered Agent leg
The "Abandoned while on hold" is a tricky one, because there isn't a metric to show that in the CDR. You can only tell that the caller disconnected. The "short call" one simply requires you to look at the Duration field of an Answered Agent leg to determine whether the agent and the caller could have interacted in that amount of time.