PostgreSQL to PrestoSQL



我需要将我的查询从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

我在最后一行使用"&amp"但如果我删除它,错误就会出现。错误是无法识别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

最新更新