Presto - Как я могу сравнить два массива, чтобы получить максимальное количество совпадающих значений - PullRequest
0 голосов
/ 25 июня 2019

Я хочу сравнить пользовательский массив с определенным массивом и получить максимальное количество совпадающих значений.

Я посмотрел, используя "transform" в presto, но не смог перейти к решению

Compare ( A[1,2,3,1,4,7,1,2,1,8] , B[1,2,3,4,5] )

Здесь массив A нужно сравнивать с массивом B. Значения, которые есть у A в B, равны 1,2,3,4

Итак, ожидаемый результат: 4

1 Ответ

1 голос
/ 26 июня 2019

Вы можете использовать array_intersect, чтобы найти общие элементы между двумя массивами, а затем array_max, чтобы найти максимальное значение в пересечении.Например:

WITH t AS (
    SELECT ARRAY [1,2,3,1,4,7,1,2,1,8] AS x, ARRAY [1,2,3,4,5] AS y
) 
SELECT array_max(array_intersect(x, y))
FROM t;

приведет к 4.

Все функции массива описаны здесь: https://prestosql.io/docs/current/functions/array.html

...