You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery中approx_quantiles为不同函数设置独立WHERE过滤条件的方法

结论

这个需求完全可以在BigQuery中实现,你期望的条件聚合逻辑可以通过BigQuery标准SQL支持的FILTER子句实现,语法和你写的伪代码逻辑完全一致。

实现语法

你只需要在聚合函数后添加FILTER (WHERE 过滤条件)即可,不符合过滤条件的行对应字段值会自动排除,不参与本次聚合计算。

完整可运行代码

with t1 as (
    select 'a' as category, 0.25 as stat1, 2 as stat1ct, 0.82 as stat2, 3 as stat2ct union all
    select 'a' as category, 0.35 as stat1, 4 as stat1ct, 0.68 as stat2, 5 as stat2ct union all
    select 'a' as category, 0.45 as stat1, 3 as stat1ct, 0.74 as stat2, 4 as stat2ct union all
    select 'a' as category, 0.28 as stat1, 0 as stat1ct, 0.72 as stat2, 0 as stat2ct union all
    select 'a' as category, 0.36 as stat1, 0 as stat1ct, 0.65 as stat2, 4 as stat2ct union all
    select 'a' as category, 0.63 as stat1, 1 as stat1ct, 0.53 as stat2, 3 as stat2ct union all
    select 'a' as category, 0.18 as stat1, 5 as stat1ct, 0.52 as stat2, 1 as stat2ct union all
    select 'a' as category, 0.43 as stat1, 3 as stat1ct, 0.57 as stat2, 2 as stat2ct
)

select
    approx_quantiles(stat1, 100) FILTER (WHERE stat1ct > 2) as atr2FgPct,
    approx_quantiles(stat2, 100) FILTER (WHERE stat2ct > 2) as paint2FgPct
from t1

逻辑说明

上述代码中:

  • 计算atr2FgPct时,仅会使用stat1ct > 2的4行数据对应的stat1值参与分位数计算,其余行自动忽略
  • 计算paint2FgPct时,仅会使用stat2ct > 2的5行数据对应的stat2值参与分位数计算,其余行自动忽略

内容的提问来源于stack exchange,提问作者Canovice

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:18:02