я думаю, что вам следует использовать Подзапросы
$countDoneStatus=DB::table('my_table')->selectRaw('id,COUNT(id) as done_status_count ')
->where('record_date','>=','2020-07-12')
->where('status','done')
->where('sent_at','<=','2020-07-13');
$countFailedStatus=DB::table('my_table')->selectRaw('my_table.id,COUNT(id) as failed_status_count')
->where('status','failed')
->where('record_date','>=','2020-07-12')
->where('sent_at','<=','2020-07-13');
$records=DB::table('my_table')->joinSub($countDoneStatus,'countDoneStatus',function($join){
$join->on('my_table.id', '=', 'countDoneStatus.id');
})->joinSub($countFailedStatus,'countFailedStatus',function($join){
$join->on('my_table.id', '=', 'countFailedStatus.id');
})
->selectRaw('COUNT(my_table.id) as record_count,countFailedStatus.failed_status_count,countDoneStatus.done_status_count')
->where('record_date','>=','2020-07-12')
->where('sent_at','<=','2020-07-13')
->get();