Есть ли способ заставить мой запрос возвращать также пустые строки? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть запрос, чтобы получить количество расписаний, сгруппированных по каждые десять минут (см. Ниже), но когда число расписаний в течение примерно десяти минут равно 0, запрос ничего не возвращает, как я могу сделать, чтобы вернуть даже если его 0. Пример возврата:

10  2019-06-01 00:00:00
5   2019-06-01 00:10:00
5   2019-06-01 00:30:00
8   2019-06-01 00:40:00

Я хочу вернуть что-то вроде этого:

10  2019-06-01 00:00:00
5   2019-06-01 00:10:00
0   2019-06-01 00:20:00
5   2019-06-01 00:30:00
8   2019-06-01 00:40:00

Вот мой запрос:

select count(distinct(s.tracking_uid)) as "Scheduled",
to_timestamp(floor((extract('epoch' from s.created_date) / 600 )) * 600) 
AT TIME ZONE 'UTC' as TenMin
from table.example se 
inner join table.example2 s on s.tracking_uid = se.tracking_uid
where
date(s.created_date) >= '2019/06/01'
and date(s.created_date) < '2019/06/17'
group by TenMin

1 Ответ

0 голосов
/ 17 июня 2019

Используйте generate_series() для генерации желаемых значений:

with e as (
      select e.*,
             to_timestamp(floor((extract('epoch' from s.created_date) / 600 )) * 600) at timezone 'UTC' as tz
      from example e
      where s.created_date >= '2019-06-01'::timestamp and
            s.created_date < '2019-06-18'::timestamp
     ) 
select gs.min10, count(distinct e.tracking_id)
from (select generate_series(min(tz), max(tz), interval '10 minute' as min10
      from e
     ) gs left join
     example e
     on e.ts = gs.min10
group by gs.min10
order by gs.min10;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...