Примерно так, но без понимания матрицы переходов статусов написать кейсы в каунтах не получится корректно с моей стороны.
select t.user_id,
count(*) as calls,
count(case when t.old_status = 'Open' then 1 end) as opened,
count(case when t.new_status = 'Assigned' then 1 end) as assigned
....
from log_ticket_statuses t
group by t.user_id
PS: Хорошо бы статусы вынести в отдельный справочник, не комильфо использовать его как строку.
PPS: Почему выбрали модель использования колонок old_stasus/new_status, почему бы не делать трек истории через связанные строки id_next? Туда неограниченное количество переходов статусов можно запихнуть на одного пользователя и по маркеру id_next is null удобно составлять запросы все ли треки завершены, и какие текущие статусы у пользователей с задачами.
history_id, ticket_id, user_id, status_id, next_history_id
1, 1, 1, 1, 2
2, 1, 1, 2, null
3, 1, 2, 1, null
4, 2, 2, 1, 5
5, 2, 2, 2, null