首页 > 解决方案 > Presto - 我如何比较两个数组以获得最大匹配值计数

问题描述

我想将用户数组与定义的数组进行比较并获得最大匹配值计数。

我在 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

标签: arrayspresto

解决方案


您可以使用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 ://trino.io/docs/current/functions/array.html


推荐阅读