Не зная точной структуры таблицы, я предположил, что status_id и statusId ссылаются на один и тот же столбец.(Если это разные столбцы, нам нужно использовать StatusId в COUNT.)
Исходя из ожидаемого результата, вы хотите посчитать status_id и сгруппировать по project_task_id.Чтобы убедиться, что каждый статус представлен для каждой задачи, сначала нам нужно создать подзапрос всех возможных комбинаций project_task_id / status_id.Затем мы используем это с совокупными значениями исходной таблицы.
select
ps.project_task_id,
ps.status_id,
count(w.status_id) as total
from (
select distinct
project_task_id,
s.status_id
from work_unit_status
cross join (select distinct status_id from work_unit_status) s
) ps
left join work_unit_status w
on ps.project_task_id = w.project_task_id and ps.status_id = w.status_id
group by
ps.project_task_id,
ps.status_id
Если вам действительно нужно жестко закодировать состояния от 1 до 7, используйте запрос ниже.
select
ps.project_task_id,
ps.status_id,
count(w.status_id) as total
from (
select distinct
project_task_id,
s.status_id
from work_unit_status
cross join (
select 1 as status_id
union select 2
union select 3
union select 4
union select 5
union select 6
union select 7
) s
) ps
left join work_unit_status w
on ps.project_task_id = w.project_task_id and ps.status_id = w.status_id
group by
ps.project_task_id,
ps.status_id
order by
ps.project_task_id,
ps.status_id