我需要将我的查询从Postgres更改为Presto,但我遇到了一个我不理解的错误-"输入'&'不匹配。应为:表达式";
我的SQL查询-
SELECT sub.custID, sum(coalesce(cast(devicecount as INT), 0)) as devicecount, data_attr3 FROM(
SELECT custID, data_attr1 as devicecount, split_part(data_attr3, '-', 2) data_attr3,
RANK() OVER
(
PARTITION by custID
ORDER BY collected_on desc
) AS rownum
FROM tableA
) sub
WHERE rownum = 1 and string_to_array(data_attr3, ':') && '{0,1,2,4,5,16}'::text[] group by 1, 3
我在最后一行使用"&"但如果我删除它,错误就会出现。错误是无法识别string_to_array,并且无法识别最后一行的::text[]。如有任何帮助,我们将不胜感激。
一如既往,文档是您的朋友。Presto在处理数组时有完全不同的语法,因此根据Presto的版本,您可以尝试下一步:
select cardinality( -- count elements in array
array_intersect( -- get arrays intersection
split('1:2:3', ':'), -- split string on ':' as string_to_array
array['0','1','2','4','5','16']) -- create varchar array
) > 0;
或
select arrays_overlap(
split('1:2:3', ':'),
array['0','1','2','4','5','16']
);
输出:
_col0 |
---|
真 |