我正在尝试做的事情:逐个州地获取已知周期内发生的事件发生时间的记录计数。问题是,在一个州内,不同的事件处于不同的周期,并且不一定每年都会收集数据。所以我想要的是,对于每个状态和周期,找到我们统计事件发生次数的最近一年,并统计该年的事件。
问题:当我运行下面的查询时,查询返回最近一年,但对该状态和周期组合的所有记录进行求和。我需要的是,查询仅计算给定状态周期组合中与收集的最新年份数据相匹配的事件。我怎样才能做到这一点? 代码:
SELECT distinct
state,
cycle_length,
max(year_collected) AS year_collected,
count(row_num) as events
FROM
`source`
group by 1, 2
SELECT
state,
cycle_length,
year_collected,
COUNT(*) AS events
FROM
`source` s1
JOIN
(SELECT
state,
cycle_length,
MAX(year_collected) AS max_year_collected
FROM `source`
GROUP BY state, cycle_length) s2
ON
s1.state = s2.state
AND s1.cycle_length = s2.cycle_length
AND s1.year_collected = s2.max_year_collected
GROUP BY
state,
cycle_length,
year_collected;