Поскольку у ваших подзапросов нет условий, они считают билеты за каждый месяц, а не только за месяц, за который вы агрегируете. Вы можете добавить это ограничение к подзапросам, но проще использовать условное агрегирование:
select count(id) as tickets,
month(created_at) as month,
sum(status = 0) as pending,
sum(status = 1) as progress,
sum(status = 2) as completed
from tickets
group by month
Примечание, поскольку MySQL обрабатывает логические значения как 1 или 0 в числовом контексте c, вы можете просто суммировать логическое выражение вместо использования структуры типа IF(expression,1,0)
.