2016-12-28 2 views
0

철저한 Google 리서치를 통해 Vertica DB는 단순히 count (distinct) over()를 지원하지 않습니다. "ERROR 4249 : MIN/MAX 만 DISTINCT를 사용할 수 있습니다 ... MIN/MAX는 DISTINCT를 사용할 수 있습니다. "Vertica의 Analytical Count (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) 

하지만 내 쿼리가 매우 긴 내가 모든 방법을 통해 트릭을 발명 할 필요가있다. 더 나은 접근을위한 아이디어?

감사합니다.

(모든 일반적인 분석 funcitions을 위해했던 것처럼 HPE에서 일이?,이를 구현주세요!) 나는 날짜 범위, 누적 고유 값을 계산 위해 뭔가 비슷한 중첩 된 계산 구조를해야했다

+0

해결책은 괜찮습니다. 내 말은, 나는'디코드 '를 사용하지 않겠지 만 문제에 대한 매우 합리적인 해결책이다. –

답변

0

. 내가 경우 사용하지만 그것은, ROW_NUMBER() = 1 행의 유사한 모임 위로 내려 삶은 :

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

보는 꽤 아니었지만, 그것은 자비 롭게 느린 아니었다.

나는 모든

그래, 난 당신이없는 기능에 충돌 할 때 바로 발생 것을 생각하는 방식을 통해 트릭을 발명 할 필요가있다.