복붙노트

[SQL] 행은 테라 데이타에서 무엇을 사용 위의 제한은 없습니다?

SQL

행은 테라 데이타에서 무엇을 사용 위의 제한은 없습니다?

난 그냥 테라 데이타에서 시작, 그리고 난 테라 데이타에서 "행은 무제한의 이전"이라는 순서가 분석 기능을 가로 질러왔다. 나는 기능에 대해 배울 여러 사이트를 시도했지만 모두가 같은를 설명하는 복잡한 예제를 사용합니다. 나는 분명 기초를 얻을 수 있도록 당신은 순진한 예와 함께 이메일에 회신 해 주시기 바랍니다 수 있을까요?

해결법

  1. ==============================

    1.그것은 "프레임"또는 SQL 표준의 일부와 테라 데이타를 포함하여 많은 데이터베이스에 구현 된 윈도우 함수의 "범위"조항입니다.

    그것은 "프레임"또는 SQL 표준의 일부와 테라 데이타를 포함하여 많은 데이터베이스에 구현 된 윈도우 함수의 "범위"조항입니다.

    간단한 예는 3 일 프레임의 평균 시간을 계산하는 것이다. 나는 예를 들어 PostgreSQL의 구문을 사용하고 있지만, 테라 데이타에 대해 동일합니다 :

    WITH data (t, a) AS (
      VALUES(1, 1),
            (2, 5),
            (3, 3),
            (4, 5),
            (5, 4),
            (6, 11)
    )
    SELECT t, a, avg(a) OVER (ORDER BY t ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
    FROM data
    ORDER BY t
    

    ... 어떤 수율 :

    t  a  avg
    ----------
    1  1  3.00
    2  5  3.00
    3  3  4.33
    4  5  4.00
    5  4  6.67
    6 11  7.50
    

    볼 수 있듯이, 각각의 평균은 이전 행 (1 위) 및 (다음의 1) 이후의 행의 범위로 이루어진 정렬 프레임 "위에"를 산출한다.

    당신이 UNBOUNDED PRECEDING 행을 쓸 때, 다음 프레임의 하한은 단순히 무한하다. 인스턴스 (즉, "실행 합계 ') 합계를 산출하는 경우에 유용하다 :

    WITH data (t, a) AS (
      VALUES(1, 1),
            (2, 5),
            (3, 3),
            (4, 5),
            (5, 4),
            (6, 11)
    )
    SELECT t, a, sum(a) OVER (ORDER BY t ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
    FROM data
    ORDER BY t
    

    굽힐 수 있는...

    t  a  sum
    ---------
    1  1    1
    2  5    6
    3  3    9
    4  5   14
    5  4   18
    6 11   29
    

    여기에 SQL 윈도우 함수의 또 다른 아주 좋은 설명을합니다.

  2. ==============================

    2.ROWS UNBOUNDED에는 테라 데이타 특정 구문, 그것의 표준 SQL입니다 PRECEDING 없습니다. 그것은 BY 주문과 함께는 결과가 계산되는 창을 정의합니다.

    ROWS UNBOUNDED에는 테라 데이타 특정 구문, 그것의 표준 SQL입니다 PRECEDING 없습니다. 그것은 BY 주문과 함께는 결과가 계산되는 창을 정의합니다.

    논리적 창있는 집계 기능을 새롭게 시작 행 및 모든 행 사이에 기초하여 파티션 내에서 행마다 계산되고 행을 종료.

    시작 및 행을 종료하는 것은 고정 또는 상대 수 있습니다 다음과 같은 키워드를 기준으로 현재 행 :

    계산 가능한 종류는 다음과 같습니다

    그래서 SUM (X) OVER (UNBOUNDED PRECEDING COL 행 BY ORDER)는 누적 합계 또는 누적 합계 결과

    11 -> 11
     2 -> 11 +  2                = 13
     3 -> 13 +  3 (or 11+2+3)    = 16
    44 -> 16 + 44 (or 11+2+3+44) = 60
    
  3. from https://stackoverflow.com/questions/30861919/what-is-rows-unbounded-preceding-used-for-in-teradata by cc-by-sa and MIT license