Как добавить фильтр к определенным годам или между определенными датами - PullRequest
1 голос
/ 08 мая 2019

Я пишу запрос, который подсчитывает количество поездок, которые превышают 20 минут, но только в 2015, 2016, 2017 годах. Код работает нормально, показывая годы и количество поездок в год, но результаты показывают все годы, а нетолько эти триПроблема в том, что столбец start_time является меткой времени.Я могу сделать timestamp_add и затем между (как показано ниже, не обращая внимания на количество дней, поскольку они просто заполнители), но это просто кажется небрежным

Я могу сделать timestamp_add и затем между (как показано ниже, не обращая внимания на количестводни, поскольку они просто заполнители) но это просто кажется небрежным.

SELECT extract(year from start_time), count(*)
FROM `datapb.shopping.trips`
where duration_minutes > 20 and
      start_time between timestamp_add(current_timestamp(), interval -1000 DAY) AND timestamp_add(current_timestamp(), interval -350 DAY)
group by EXTRACT(YEAR from start_time)

Любые предложения будут фантастическими, спасибо!

1 Ответ

2 голосов
/ 08 мая 2019

Почему бы просто не использовать константы меток времени?

select extract(year from start_time) as yyyy, count(*)
from `datapb.shopping.trips`
where duration_minutes > 20 and
      start_time >= timestamp('2015-01-01') and
      start_time < timestamp('2018-01-01')
group by yyyy
order by yyyy;
...