我在雪花表中有一个 varchar 类型的列,其中包含逗号(,)分隔值。我曾经split(mycolumn,',')
将所有逗号(,)分隔的值更改为一个数组。现在,使用split
函数后,我有一个值数组。
我怎样才能从这个数组中获得最大值?
我尝试了两个功能max()
,greatest()
但没有用。
提前致谢。
我在雪花表中有一个 varchar 类型的列,其中包含逗号(,)分隔值。我曾经split(mycolumn,',')
将所有逗号(,)分隔的值更改为一个数组。现在,使用split
函数后,我有一个值数组。
我怎样才能从这个数组中获得最大值?
我尝试了两个功能max()
,greatest()
但没有用。
提前致谢。
您可以通过使用LATERAL FLATTEN来完成此操作
CREATE OR REPLACE TEMPORARY TABLE TestTable (
ID INTEGER
,ColLabel VARCHAR
,ColValues VARIANT
)
AS
SELECT $1
,$2
,PARSE_JSON($3)
FROM VALUES
(1, 'Jon', '[2,4,6]')
,(2, 'Susan', '[10]')
,(3, 'Sally', '[25,25,25,25]')
;
SELECT T.ID
,T.ColLabel
,SUM(F.VALUE::INTEGER) AS ColValues_Elem
FROM TestTable AS T
,LATERAL FLATTEN(T.ColValues) AS F
GROUP BY T.ID, T.ColLabel
;
结果:
ID COLLABEL COLVALUES_ELEM
1 Jon 12
2 Susan 10
3 Sally 100
像这样的东西:
select sum(c.value::number) as val
from dual,
lateral flatten(input=>split('1,2,33',',')) c;
(通常您需要先展平数组,然后才能对其求和)