Чтобы получить всю информацию об агенте, а затем присоединиться к нему, чтобы получить счетчики из другой таблицы, вам, как правило, нужно сделать группу по всем неагрегированным полям ... Если в вашей таблице агентов есть несколько полей, вы было бы лучше предварительно агрегировать ваш подзапрос, чтобы просто получить подсчеты для каждого агента-агента ... Тогда у вас есть НАИБОЛЕЕ одна запись на агента и вы можете просто выполнить LEFT-JOIN для этого агента.
Я предполагаю, что ссылки на ваши таблицы "table", "table2", "table3" на самом деле являются поддельными именами реальных таблиц, но с использованием в запросе псевдонимов "agent", "p" и "q" соответственно.
select
agent.*,
que.AgentQueueCount queue_count
from
table agent
left join
(select
q.agent_id,
count(*) AgentQueueCount
from
table2 q
INNER JOIN table3 p
on q.path_id = p.id
AND p.name='demo'
where
q.status = 1
group by
q.agent_id ) que
on agent.id = que.agent_id
order by
que.AgentQueueCount
Здесь подзапрос уже внутренне присоединен к соответствующему идентификатору пути и имени пути.