经过彻底的谷歌研究,似乎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工作?请执行此操作,正如您对所有常用分析功能所做的那样!)
答案 0 :(得分:0)
我必须做一些类似的嵌套计数结构,用于在日期范围内累计计算不同的值。它归结为ROW_NUMBER()= 1行的类似收集,但我使用了大小写:
COUNT(CASE WHEN rank = 1 THEN userID END) OVER (...)
看起来不是很漂亮,但它很可怜不慢。
我需要在整个过程中发明技巧
是的,我认为只有当你遇到缺失的功能时才会发生。