我正在转换我的MySql查询以运行Vertica数据库,因为我们遇到了执行SUM聚合函数问题的项目。
MYSQL查询:
SELECT event.plateNumber, event.plateCodeId, sum( event.sourceId
in (1,2,3) ) as 'sum' from event group by event.plateNumber, event.plateCodeId
having sum( event.sourceId in (1,2,3) ) > 0 ;
我正在尝试在vertica数据库中运行此查询并且具有以下异常。
错误:函数sum(布尔值)不存在,或者sum(boolean)的权限被拒绝
当我们引用关于SUM聚合函数的vertica documentation时,看起来函数签名没有区别。
我试图查看不同的网站,但无法获得任何帮助将上述MYSQL查询转换为vertica查询。
有人可以帮忙吗?
由于
答案 0 :(得分:1)
Vertica支持sum()谓词,但不支持布尔值。 您需要先将布尔值转换为数字。由于cast不知道如何将布尔值转换为数字,因此最佳选择是使用case。例如:
SELECT event.plateNumber,
event.plateCodeId,
sum( CASE WHEN event.sourceId in (1,2,3) THEN 1 ELSE 0 END) as 'sum'
FROM event
GROUP BY event.plateNumber, event.plateCodeId
答案 1 :(得分:1)
怎么样......
SELECT
event.plateNumber,
event.plateCodeId,
sum((event.sourceId in (1,2,3))::INTEGER) as 'sum'
FROM
event
GROUP BY
event.plateNumber, event.plateCodeId
HAVING
sum((event.sourceId in (1,2,3))::INTEGER) > 0 ;