不支持在Vertica上使用分析计数(不同)

时间:2016-12-28 21:04:24

标签: sql database vertica analytical

经过彻底的谷歌研究,似乎Vertica DB不支持count(distinct)over(),因为它会导致: “ERROR 4249:只允许MIN / MAX使用DISTINCT ...允许MIN / MAX使用DISTINCT”

我正在寻找一个简单的绕行方式。

与此同时,我正在使用连接或嵌套查询。

例如:

    select campaign_id, segment_id, COUNT(DECODE(rank, 1, 1, NULL)) over()
    from (select campaign_id, segment_id, row_number() over(partition by segment_id) rank
          from cs)

但我的查询很长,我需要在整个过程中发明技巧。想要更好的方法吗?

谢谢!

(在HPE工作?请执行此操作,正如您对所有常用分析功能所做的那样!)

1 个答案:

答案 0 :(得分:0)

我必须做一些类似的嵌套计数结构,用于在日期范围内累计计算不同的值。它归结为ROW_NUMBER()= 1行的类似收集,但我使用了大小写:

COUNT(CASE WHEN rank = 1 THEN userID END) OVER (...)

看起来不是很漂亮,但它很可怜不慢。

  

我需要在整个过程中发明技巧

是的,我认为只有当你遇到缺失的功能时才会发生。