我正在编写一个查询,该查询对超过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)
任何建议都会很棒,谢谢!
答案 0 :(得分:2)
为什么不只使用时间戳常量?
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;