1

经过彻底的谷歌研究,Vertica DB 似乎根本不支持count(distinct <col>) over(<partition by>),因为它导致:

"ERROR 4249: Only MIN/MAX are allowed to use DISTINCT ... MIN/MAX are allowed to use 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 工作?请像对待所有常见分析功能一样执行此操作!)

4

1 回答 1

0

我必须做一些类似的嵌套计数结构来累积计算不同的值,在一个日期范围内。它归结为 ROW_NUMBER() = 1 行的类似收集,尽管我使用了案例:

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

它看起来并不漂亮,但幸运的是它并不慢。

我需要一路发明技巧

是的,我认为当您遇到缺少的功能时就会发生这种情况。

于 2016-12-29T17:19:43.507 回答