【问题标题】:Nested Max function in SQLSQL中的嵌套Max函数
【发布时间】:2022-09-23 15:44:38
【问题描述】:

我想在 bigquery 中嵌套最大函数。

样本-

最大值(a,最大值(b,最大值(c,d)))

它给出了无效参数的错误。所以,我尝试的是最伟大的功能

最大(a,b,c,d)。但是 Greatest 函数的问题在于,如果任何值为 null,它将返回 null。但我想要的是,即使任何值为空,它也应该返回最大的值。

例如-

Greatest(1,3,4,null) - 它应该返回 4

Greatest(null,null,null) - 它应该返回 null

    标签: sql google-bigquery


    【解决方案1】:

    您可以使用COALESCE()GREATEST()

    SELECT GREATEST(
        COALESCE(a, b, c, d),
        COALESCE(b, a, c, d),
        COALESCE(c, a, b, d),
        COALESCE(d, a, b, c))
    FROM yourTable;
    

    上述逻辑的行为使得传递给GREATEST() 的四个值中的每一个都“推迟”到某个其他值(如果它是NULL)。这样,对GREATEST() 的调用只会在所有四个输入同时为空的情况下返回NULL

    【讨论】:

      【解决方案2】:

      您可以考虑以下标量子查询。

      WITH sample_data AS (
        SELECT 1 a, 3 b, 4 c, null d UNION ALL
        SELECT null, null, null, null
      )
      SELECT (SELECT MAX(n) FROM UNNEST([a, b, c, d]) n) AS max FROM sample_data; 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-08
        • 1970-01-01
        • 1970-01-01
        • 2016-03-07
        • 1970-01-01
        • 2013-05-10
        • 2019-02-02
        相关资源
        最近更新 更多