Вывод нулевых значений в сложном SQL запросе с использованием COUNT
Есть выборка из разных таблиц по количеству заказов в указанном диапазоне для курьера.
В данный момент данные выводится, только если за определенный день из указанного периода есть заказы.
Нужно сделать так, чтобы выборка включала все дни из указанного диапазона, и в случае, если за какой-то день заказов нет, - то рядом стояла цифра ноль.
Например, мы указали диапазон от 20.04.2023 до 24.04.2023, заказы есть только за 21 (3 заказа) и 22 (1 заказ) числа, ожидаем на выходе:
20.04.2023 - 0
21.04.2023 - 3
22.04.2023 - 1
23.04.2023 - 0
24.04.2023 - 0
Сам запрос:
SELECT dates.d, COUNT(o.id)
FROM (
SELECT date_trunc('day', generate_series('2023-01-14 00:00:00.000'::timestamp, '2023-02-14 23:59:59.999'::timestamp, '1 day')) AS d
) AS dates
left join orders AS o ON date_trunc('day', o.start_time) = dates.d
JOIN routes AS r ON o.route_id = r.id
JOIN courier_working_shifts cws on r.working_shift = cws.id
WHERE o.status = 'FINISHED'
AND r.courier_id = '500051'
AND cws.part_time = false
group BY dates.d
Сейчас нули не выводит, выводит только те дни, по которым есть заказы.
Пробовал через isnull
, не получилось. HELP.
Источник: Stack Overflow на русском