Вывод нулевых значений в сложном SQL запросе с использованием COUNT

Рейтинг: 0Ответов: 0Опубликовано: 24.04.2023

Есть выборка из разных таблиц по количеству заказов в указанном диапазоне для курьера.

В данный момент данные выводится, только если за определенный день из указанного периода есть заказы.

Нужно сделать так, чтобы выборка включала все дни из указанного диапазона, и в случае, если за какой-то день заказов нет, - то рядом стояла цифра ноль.

Например, мы указали диапазон от 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.

Ответы

Ответов пока нет.