[英]Nested Max function in SQL
我想在 bigquery 中嵌套最大函數。
樣本-
最大值(a,最大值(b,最大值(c,d)))
它給出了無效 arguments 的錯誤。 所以,我嘗試的是最偉大的 function
最大(a,b,c,d)。 但是最大的 function 的問題是,如果任何值是 null,它將返回 null。 但我想要的是,即使任何值是 null,它也應該返回最大的值。
例如-
Greatest(1,3,4,null) - 它應該返回 4
最大(null,null,null)- 它應該返回 null
您可以將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
。 這樣,在所有四個輸入同時為 null 的情況下,對GREATEST()
的調用只會返回NULL
。
您可以考慮以下標量子查詢,因為MAX聚合 function
返回非 NULL 表達式的最大值。 如果輸入行為零或表達式對所有行計算為 NULL,則返回 NULL。 如果輸入包含 NaN,則返回 NaN。
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.