지원 버전 :48006000004800600000600토토 사이트48006000006000004800500004800600000600000480048005000000000(4800 |6000 사설 토토 사이트0 |4800 |6000 사설 토토 사이트0 |6000 사설 토토 사이트0 |_4800 |6000 사설 토토 사이트0 |6000 사설 토토 사이트0 |4800 |500 사설 토토 사이트0 |4800 |6000 사설 토토 사이트0 |6000 사설 토토 사이트0 |4800 |4800 |500 사설 토토 사이트0 사설 토토 사이트0 사설 토토 사이트0 사설 토토 사이트) /4800 |6000 스포츠 토토 베트맨0 |4800 |6000 스포츠 토토 베트맨0 |6000 스포츠 토토 베트맨0 |_4800 |6000 스포츠 토토 베트맨0 |6000 스포츠 토토 베트맨0 |4800 |500 스포츠 토토 베트맨0 |4800 |6000 스포츠 토토 베트맨0 |6000 스포츠 토토 베트맨0 |4800 |4800 |500 스포츠 토토 베트맨0 스포츠 토토 베트맨0 스포츠 토토 베트맨0 스포츠 토토 베트맨 / 4800 |6000 스포츠 토토 베트맨0 |4800 |6000 스포츠 토토 베트맨0 |6000 스포츠 토토 베트맨0 |_4800 |6000 스포츠 토토 베트맨0 |6000 스포츠 토토 베트맨0 |4800 |500 스포츠 토토 베트맨0 |4800 |6000 스포츠 토토 베트맨0 |6000 스포츠 토토 베트맨0 |4800 |4800 |500 스포츠 토토 베트맨0 스포츠 토토 베트맨0 스포츠 토토 베트맨0 스포츠 토토 베트맨 / 4800 |6000 배트맨 토토0 |4800 |6000 배트맨 토토0 |6000 배트맨 토토0 |_4800 |6000 배트맨 토토0 |6000 배트맨 토토0 |4800 |500 배트맨 토토0 |4800 |6000 배트맨 토토0 |6000 배트맨 토토0 |4800 |4800 |500 배트맨 토토0 배트맨 토토0 배트맨 토토0 배트맨 토토 / 4800 |6000 배트맨 토토0 |4800 |6000 배트맨 토토0 |6000 배트맨 토토0 |_4800 |6000 배트맨 토토0 |6000 배트맨 토토0 |4800 |500 배트맨 토토0 |4800 |6000 배트맨 토토0 |6000 배트맨 토토0 |4800 |4800 |500 배트맨 토토0 배트맨 토토0 배트맨 토토0 배트맨 토토
개발 버전 :18 / Devel
지원되지 않은 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4

3.5. 창 토토 사이트#

a창 토토 사이트현재 행과 관련된 일련의 테이블 행에서 계산을 수행합니다. 이것은 집계 함수로 수행 할 수있는 계산 유형과 비슷합니다. 그러나 창 토토 사이트로 인해 무리가 아닌 집계 호출과 같이 행이 단일 출력 행으로 그룹화되지 않습니다. 대신, 행은 별도의 정체성을 유지합니다. 무대 뒤에서 창 토토 사이트는 쿼리 결과의 현재 행보다 더 많이 액세스 할 수 있습니다.

다음은 각 직원의 급여를 부서의 평균 급여와 비교하는 방법을 보여주는 예입니다.

Depname, Empno, Salary, Avg (Salary) Over (Depname에 의한 파티션)를 선택하여 Empsalary;
depname | Empno | 급여 |          avg
-----------+-------+--------+-------------------------
 개발 |    11 |   5200 | 5020.00000000000000
 개발 |     7 |   4200 | 5020.00000000000000
 개발 |     9 |   4500 | 5020.00000000000000
 개발 |     8 |   6000 | 5020.00000000000000
 개발 |    10 |   5200 | 5020.00000000000000
 인원 |     5 |   3500 | 3700.00000000000000
 인원 |     2 |   3900 | 3700.00000000000000
 판매 |     3 |   4800 | 4866.666666666666667
 판매 |     1 |   5000 | 4866.666666666666667
 판매 |     4 |   4800 | 4866.666666666666667
(10 줄)

처음 3 개의 출력 열은 테이블에서 직접 나옵니다empsalary, 테이블에 각 행마다 하나의 출력 행이 있습니다. 네 번째 열은 동일한 모든 테이블 행에서 찍은 평균을 나타냅니다.depname현재 행으로 값. (이것은 실제로 비 창과 같은 기능입니다avg집계이지만Over조항은 창 토토 사이트로 취급되고 창 프레임을 가로 질러 계산합니다.)

창 토토 사이트 호출은 항상를 포함합니다.Over창 토토 사이트의 이름과 인수에 따라 직접 조항. 이것은 구문 적으로 그것을 정상적인 함수 또는 비 창의 집계와 구별하는 것입니다. 그만큼Over조항은 쿼리의 행이 창 토토 사이트에 의해 처리를 위해 어떻게 분할되는지 정확하게 결정합니다. 그만큼파티션 by내부의 조항Over행을 동일한 값의 값을 공유하는 그룹 또는 파티션으로 나누는파티션 by표현. 각 행에 대해, 창 토토 사이트는 현재 행과 동일한 파티션으로 떨어지는 행에 걸쳐 계산됩니다.

당신은 또한 window 토토 사이트에 의해 행이 처리되는 순서를 제어 할 수도 있습니다.주문 byOver. (창주문 by행이 출력되는 순서와 일치 할 필요조차 없습니다.) 예는 다음과 같습니다..

Depname, Empno, Salary,
       RANK () OVER (Salary Desc의 Depname Order 별 파티션)
empsalary에서;
Depname | Empno | 급여 | 계급
----------+-------+--------+------
 개발 |     8 |   6000 |    1
 개발 |    10 |   5200 |    2
 개발 |    11 |   5200 |    2
 개발 |     9 |   4500 |    4
 개발 |     7 |   4200 |    5
 인원 |     2 |   3900 |    1
 인원 |     5 |   3500 |    2
 판매 |     1 |   5000 |    1
 판매 |     4 |   4800 |    2
 판매 |     3 |   4800 |    2
(10 줄)

여기에 표시된대로RANK토토 사이트는 각각의 별개의 숫자 순위를 생성합니다주문 by현재 행 파티션의 값주문조항RANK행동이 전적으로 결정되기 때문에 명시적인 매개 변수가 필요하지 않습니다.Over절.

창 토토 사이트로 고려되는 행은의 행입니다.가상 테이블쿼리에서 생성From조항에 의해 필터링 된 조항여기서, 그룹 by클로즈가있는 경우. 예를 들어, 행은를 충족하지 않기 때문에 제거되었습니다.여기서조건은 어떤 창 토토 사이트로도 보이지 않습니다. 쿼리에는 다른 방식으로 데이터를 다른 방식으로 슬라이스하는 여러 창 토토 사이트가 포함될 수 있습니다.OverClauses, 그러나 그들은 모두이 가상 테이블에 의해 정의 된 동일한 행 모음에 작용합니다.

우리는 이미 그것을 보았습니다주문 by행 주문이 중요하지 않으면 생략 할 수 있습니다. 생략 할 수도 있습니다파티션 by,이 경우 모든 행이 포함 된 단일 파티션이 있습니다.

창 토토 사이트와 관련된 또 다른 중요한 개념이 있습니다. 각 행마다 파티션 내에이라는 행이 있습니다.창 프레임. 일부 창 토토 사이트는 전체 파티션이 아닌 창 프레임의 행에서만 작용합니다. 기본적으로 if주문 by제공됩니다. 프레임은 현재 행을 통해 파티션의 시작부터 모든 행으로 구성되며에 따라 현재 행과 동일한 행을 다음 행으로 구성합니다.주문 by절. 언제주문 by생략 됨 기본 프레임은 파티션의 모든 행으로 구성됩니다.[5]여기를 사용하는 예는입니다.Sum:

empsalary에서 () 오버 ()를 선택한 급여, 금액 (급여) 선택;
급여 |  합집합
--------+-------
   5200 | 47100
   5000 | 47100
   3500 | 47100
   4800 | 47100
   3900 | 47100
   4200 | 47100
   4500 | 47100
   4800 | 47100
   6000 | 47100
   5200 | 47100
(10 줄)

위, 없기 때문에주문 byinOver절, 조항, 창 프레임은 파티션과 동일하며파티션 by전체 테이블입니다. 다시 말해 각 합계는 전체 테이블을 통해 취해 지므로 각 출력 행에 대해 동일한 결과를 얻습니다. 그러나 우리가 추가하면주문 by조항, 우리는 매우 다른 결과를 얻습니다 :

empsalary의 급여, 금액 (급여)을 선택하십시오.
급여 |  합집합
--------+-------
   3500 |  3500
   3900 |  7400
   4200 | 11600
   4500 | 16100
   4800 | 25700
   4800 | 25700
   5000 | 30700
   5200 | 41100
   5200 | 41100
   6000 | 47100
(10 줄)

여기에서 합계는 현재의 복제물을 포함하여 현재의 첫 급여에서 가져옵니다 (복제 된 급여의 결과에 대한 참조)..

창 토토 사이트는에서만 허용됩니다.select목록 및주문 by쿼리 조항. in in과 같은 다른 곳에서는 금지되어 있습니다.그룹 by, and여기서조항. 이 조항을 처리 한 후 논리적으로 실행되기 때문입니다. 또한 창 토토 사이트는 비 독사 집계 기능 후에 실행됩니다. 이것은 창 토토 사이트의 인수에 집계 함수 호출을 포함시키는 것이 유효하지만 그 반대는 아닙니다.

창 계산이 수행 된 후 필터 또는 그룹 행이 필요하다면 하위 선택을 사용할 수 있습니다. 예를 들어:

Depname, Empno, Salary, enroll_date를 선택하십시오
에서
  (Depname, Empno, Salary, enroll_date,
          rank () Over (POS로서 DEPNAME ORDER에 의한 분할) POS로
     empsalary에서
  ) SS로서
여기서 pos <3;

위의 쿼리는 내부 쿼리의 행만 표시RANK3보다 작습니다.

쿼리에 여러 개의 창 토토 사이트가 포함되면 별도의 각각을 쓸 수 있습니다Over조항이지만, 여러 기능에 대해 동일한 창 동작이 원하는 경우 이는 복제적이고 오류가 발생하기 쉽습니다. 대신, 각 윈도우 동작은 A에서 이름을 지정할 수 있습니다.절과 참조Over. 예를 들어:

W에서 W, AVG (급여)를 통해 합 (급여)을 선택하십시오
  empsalary에서
  Window W as (Salary Desc의 Depname Order에 의한 파티션);

창 토토 사이트에 대한 자세한 내용은 찾을 수 있습니다.섹션 4.2.8, PostgreSQL : 문서 : 17 : 9.22. 창 스포츠 토토, 섹션 7.2.5select참조 페이지.



[5]다른 방식으로 창 프레임을 정의 할 수있는 옵션이 있지만이 자습서는이를 다루지 않습니다. 보다섹션 4.2.8자세한 내용.

수정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면