Вы можете использовать CROSS JOIN
для генерации строк и LEFT JOIN
для получения результатов:
select v.id, d.dte as start, count(ar.vinculo_id) as num_title
from (select '2019-07-02' as dte) d cross join
vinculo v left join
atendimento_regulacao ar
on v.id = ar.vinculo_id and ar.data = d.dte
group by v.id, d.dte;
Если вы действительно хотите агрегировать по v.usuario_id
, включите его как в select
, так и в group by
.
Примечания:
- Структура запроса легко распространяется на несколько дат.
-
GROUP BY
использует те же столбцы в SELECT
.
- Псевдонимы таблиц облегчают написание и чтение запроса.
- Квалифицировать все ссылки на столбцы в запросе, который имеет более одной ссылки на таблицу.
- В
COUNT()
используется столбец из ar
, поэтому он может вернуть 0
.
Для конкретного случая отдельной даты вы можете использовать условное агрегирование:
select v.id, '2019-07-02' as start,
count(ar.vinculo_id) as num_title
from vinculo v left join
atendimento_regulacao ar
on v.id = ar.vinculo_id and ar.data = '2019-07-02'
group by v.id;