如何计算一个数组(重复项)与SQL(Presto)中另一个数组的元素匹配的元素的数量?



我有两个数组X,Y。X=[a,b,c]Y=[a,a,b,b,b,c,d,d,e,e,e]。我想编写一个查询,它将返回Y中与X中元素匹配的元素的数量(有重复项)。在这种情况下,输出应该是[a,a,b,b,b,c],我需要这个数组的长度是6。我知道array_intersect将返回没有重复项。

SELECT array_intersect([a,b,c],[a,a,b,b,b,c,d,d,e,e,e])

结果是

[a,b,c]

但是我想要的输出是

[a,a,b,b,b,c]

这可以通过filtercontains实现:

SELECT filter(array['a','a','b','b','b','c','d','d'], el -> contains(array['a','b','c'], el))

输出:

<表类>_col0tbody><<tr>[a, a, b, b, b, c)

最新更新