首页 > 解决方案 > Bigquery - 忽略 NULL 值的列之间的平均值

问题描述

TL;DR:有没有一种简单的方法可以计算谷歌大查询中一组列之间的平均值?

我有一个表,其中包含来自连续变量的许多估计值,我给出的示例只有三列,但原始表有 8 列之间的内容:

估计_A 估计_B 估计_C
4 2 3
1 2 2
4 无效的 2
2 3 无效的
4 无效的 无效的

我想生成一个新列 AVG_ESTIMATE 它是这些估计列之间的 AVERAGE 但忽略 NULL 数据

估计_A 估计_B 估计_C AVG_ESTIMATE
4 2 3 3
1 2 2 1.66
4 无效的 2 3
2 3 无效的 2.5
4 无效的 无效的 4

标签: sqlgoogle-bigquery

解决方案


考虑以下解决方案

select *, 
  (select round(avg(Estimate), 2) 
  from unnest([Estimate_A, Estimate_B, Estimate_C]) Estimate
  ) as AVG_ESTIMATE
from `project.dataset.table`    

如果应用于您问题中的样本数据 - 输出是

在此处输入图像描述


推荐阅读