Как получить максимальное значение из столбца массива в Snowflake? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть столбец в таблице снежинок, который является типом varchar и содержит в нем значения, разделенные запятыми (,). Я использовал split(mycolumn,','), чтобы преобразовать все значения, разделенные запятыми (,), в массив. Теперь, после использования функции split, у меня есть массив значений.

Как я могу получить максимальное значение из этого массива?

Я пробовал обе функции max() и greatest(), но нет использовать.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Вы можете sh этого добиться, используя ПОПЛОСКОЕ

    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
0 голосов
/ 09 июля 2020

Примерно так:

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

(обычно вам нужно сгладить массив, прежде чем вы сможете суммировать его)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...