[英]In BigQuery, group by where date is <= each unique date in table column
我们有示例数据t1
,我们正在尝试从下面的查询中创建最终的 output,其中数据中每个唯一日期有 1 行
with
t1 as (
select '2022-12-01' as gameDate, 3 as stat1, 7 as stat2 union all
select '2022-12-01' as gameDate, 2 as stat1, 5 as stat2 union all
select '2022-12-01' as gameDate, 5 as stat1, 6 as stat2 union all
select '2022-12-02' as gameDate, 3 as stat1, 8 as stat2 union all
select '2022-12-02' as gameDate, 4 as stat1, 7 as stat2 union all
select '2022-12-02' as gameDate, 2 as stat1, 8 as stat2 union all
select '2022-12-02' as gameDate, 3 as stat1, 8 as stat2 union all
select '2022-12-03' as gameDate, 1 as stat1, 6 as stat2 union all
select '2022-12-03' as gameDate, 2 as stat1, 6 as stat2 union all
select '2022-12-03' as gameDate, 3 as stat1, 8 as stat2 union all
select '2022-12-03' as gameDate, 4 as stat1, 9 as stat2 union all
select '2022-12-03' as gameDate, 4 as stat1, 5 as stat2 union all
select '2022-12-04' as gameDate, 2 as stat1, 9 as stat2 union all
select '2022-12-04' as gameDate, 1 as stat1, 7 as stat2 union all
select '2022-12-04' as gameDate, 2 as stat1, 7 as stat2 union all
select '2022-12-04' as gameDate, 1 as stat1, 5 as stat2 union all
select '2022-12-04' as gameDate, 4 as stat1, 9 as stat2 union all
select '2022-12-05' as gameDate, 3 as stat1, 8 as stat2 union all
select '2022-12-05' as gameDate, 3 as stat1, 6 as stat2 union all
select '2022-12-05' as gameDate, 4 as stat1, 6 as stat2 union all
select '2022-12-06' as gameDate, 1 as stat1, 5 as stat2 union all
select '2022-12-06' as gameDate, 3 as stat1, 7 as stat2
),
data_stacked as (
select '2022-12-01' as rowDate, * from t1 where gameDate <= '2022-12-01' union all
select '2022-12-02' as rowDate, * from t1 where gameDate <= '2022-12-02' union all
select '2022-12-03' as rowDate, * from t1 where gameDate <= '2022-12-03' union all
select '2022-12-04' as rowDate, * from t1 where gameDate <= '2022-12-04' union all
select '2022-12-05' as rowDate, * from t1 where gameDate <= '2022-12-05' union all
select '2022-12-06' as rowDate, * from t1 where gameDate <= '2022-12-06'
)
select
rowDate,
count(*) as ct,
sum(stat1) as sumStat1,
sum(stat2) as sumStat2
from data_stacked
group by 1 order by 1 asc
我们希望按<= each date
进行分组,并在 groupby 内计算组内的 num 行和 stat1、stat2 的总和。 上面的示例在技术上是可行的,尽管它是通过硬编码日期实现的,因此不可扩展,不是一个很好的长期解决方案。
这里是否有一个 bigquery 解决方案可以从t1
中找到不同的gameDate
并使用这些 gameDate 来执行此 groupby?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.