【问题标题】:Calculating median of 3 columns in a BigQuery table计算 BigQuery 表中 3 列的中位数
【发布时间】:2022-01-02 05:09:37
【问题描述】:

我正在尝试构建一个查询来计算 3 列值的中位数。我的表格如下所示,

Item Column 1 Column 2 Column 3
A 10 12 4
B 5 14 20
C 15 5 4

我希望能够输出,

Item Column 1 Column 2 Column 3 Median
A 10 12 4 10
B 5 14 20 14
C 15 5 4 5

我已经尝试过 percentile_cont() 但这似乎只适用于单列中的值。我如何做到这一点?

【问题讨论】:

    标签: google-bigquery median


    【解决方案1】:

    你试过了吗:

    select Col1, Col2, Col3, 
           PERCENTILE_CONT([Col1, Col2, Col3], 0.5) OVER() AS Median
    from   tableName
    

    【讨论】:

    • 是的,但是错误输出为 对于参数类型:ARRAY、FLOAT64 的分析函数 PERCENTILE_CONT 没有匹配的签名。支持的签名:PERCENTILE_CONT(FLOAT64, FLOAT64); PERCENTILE_CONT(NUMERIC, NUMERIC); PERCENTILE_CONT(BIGNUMERIC, BIGNUMERIC) 在 [5:3]
    【解决方案2】:

    考虑以下方法

    select *, 
      ( select distinct percentile_disc(col, 0.5) over() 
        from unnest([Column1, Column2, Column3]) as col
      ) AS Median
    from your_table       
    

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

    【讨论】:

    • 谢谢!!这有效!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多