Vertica数据库中的总和查询

时间:2017-08-03 06:19:55

标签: mysql vertica

我正在转换我的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查询。

有人可以帮忙吗?

由于

2 个答案:

答案 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  ;