SQL中有没有办法返回多个分组列的最大值?

问题描述 投票:0回答:1

我正在尝试做的事情:逐个州地获取已知周期内发生的事件发生时间的记录计数。问题是,在一个州内,不同的事件处于不同的周期,并且不一定每年都会收集数据。所以我想要的是,对于每个状态和周期,找到我们统计事件发生次数的最近一年,并统计该年的事件。

问题:当我运行下面的查询时,查询返回最近一年,但对该状态和周期组合的所有记录进行求和。我需要的是,查询仅计算给定状态周期组合中与收集的最新年份数据相匹配的事件。我怎样才能做到这一点? 代码:

SELECT distinct state, cycle_length, max(year_collected) AS year_collected, count(row_num) as events FROM `source` group by 1, 2


sql google-bigquery count max
1个回答
0
投票

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;

© www.soinside.com 2019 - 2024. All rights reserved.