2017-09-12 1 views
1

이전 문제를 연구하면서 this post에 대한 대답을 사용했습니다. 내 검색어는 다음과 같습니다.테라 데이타 파티션을 col order by 0으로 정렬

sel 
    * 
from (
    sel distinct 
     COL, 
     FIELD 
    from TBL 

    where COL in (
     -- subquery 
    ) 
     and FIELD is not NULL 
) q 
qualify row_number() over (partition by COL order by 0) between 1 and 750 
; 

내가 원하는 것은 수행하지만 완전히 이해하지 못합니다. 문제는 partition by COL order by 0 비트입니다. 나는 partition by이 지정된 필드의 값을 기반으로 데이터를 하위 그룹으로 분할하고 그 필드 이름에 따라 각 필드의 결과를 정렬 할 때 order by을 이해하지만 그 필드가 작동하는 방식을 이해하지 못한다는 것을 이해합니다. 정수. 내 가정은 그 자리에 상수를 두는 것이 같은 결과를 낳을 것이라는 것입니다. 이 가정이 맞습니까? 0 여기에 특별한 의미가 있습니까?

+0

자연스러운 순서로 레코드를 정렬하고 그에 따라 행 번호 값을 할당하기 위해 지정된 더미 값입니다. –

+0

상수로 주문한 결과 나 구현에서 실제로 발생한 일을 이해하지 못합니까? 예. 어떻게 넥타이가 망가 졌습니까? –

+0

상수로 주문한 결과를 이해할 수 없으며 어떤 관계를 언급하고 있는지 확실하지 않습니다. –

답변

1

가정은 정확합니다. 당신은 거기에 어떤 가치라도 붙일 수 있고 당신은 같은 결과를 얻을 것입니다.

ROW_NUMBER()를 사용할 때 창 함수의 OVER() 부분의 ORDER BY 절이 필요합니다. 당신이 상수로 주문하기 때문에

말에 가깝다이에 상수를 튀어 나와 "나는 당신이 계속 COL에 대한 기록하는 상관 없어, 그냥 750을 유지"@dnoeth으로

는 지적 Teradata의 병렬 특성과 이것이 병렬 시스템 (일반적으로 RDBMS의 특성)에 대한 데이터 검색에 미치는 영향으로 인해 두 번의 실행간에 동일한 결과가 나올 것이라는 보장이 없습니다.