Простой ответ:
select count(*), status
from ticket
group by status
Однако это дает разные результаты, если у вас нет строк для состояния, поскольку описанное здесь поведение: Всегда ли COUNT (*) возвращает результат?
Если предположить, что вы сделали бы только 3 значения статуса:
select count(t.status), s.status
from
(SELECT 1 AS status UNION ALL SELECT 2 UNION ALL SELECT 3) s
LEFT JOIN
ticket t ON s.status = t.status
group by
s.status
.. или с отдельной таблицей поиска статуса:
select count(t.status), s.status
from
(SELECT DISTINCT status FROM status) s
LEFT JOIN
ticket t ON s.status = t.status
group by
s.status