1

我在雪花表中有一个 varchar 类型的列,其中包含逗号(,)分隔值。我曾经split(mycolumn,',')将所有逗号(,)分隔的值更改为一个数组。现在,使用split函数后,我有一个值数组。

我怎样才能从这个数组中获得最大值?

我尝试了两个功能max()greatest()但没有用。

提前致谢。

4

2 回答 2

1

您可以通过使用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
于 2020-07-09T13:42:59.280 回答
1

像这样的东西:

    select sum(c.value::number) as val
from dual,
     lateral flatten(input=>split('1,2,33',',')) c;

(通常您需要先展平数组,然后才能对其求和)

于 2020-07-09T07:09:23.433 回答