Sql 在运行求和中填充空值

Sql 在运行求和中填充空值,sql,google-bigquery,Sql,Google Bigquery,每次某个类别的值发生变化时,我都要计算几个类别之间的比率 如果我有下表: 块 类别 价值 1. A. 30 1. B 20 1. C 50 2. A. 40 4. B 10 使用交叉联接生成行。使用左联接引入现有值,然后使用窗口函数: select b.block, bc.category, sum(bt.value) over (partition by c.category order by b.block) as value from (select distinct blo

每次某个类别的值发生变化时,我都要计算几个类别之间的比率

如果我有下表:

块 类别 价值 1. A. 30 1. B 20 1. C 50 2. A. 40 4. B 10
使用
交叉联接生成行
。使用
左联接
引入现有值,然后使用窗口函数:

select b.block, bc.category,
       sum(bt.value) over (partition by c.category order by b.block) as value
from (select distinct block from block_table) b cross join
     (select distinct category from block_table) c left join
     block_table bt
     on b.block = bt.block and c.category = bt.category;

谢谢,它起作用了。在我认为答案正确之前,我想问你是否可以给我更多关于答案的细节。我没有完全理解它,特别是交叉连接/左连接组合的部分。我不完全理解为什么它可以用最接近的前一个值来填充缺少的值。@Rod0n。这是因为累积和忽略
NULL
值。
left join
为缺少的行生成
NULL
值,并且累积总和满足您的要求。