지원 버전 :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
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다48006000004800600000600토토 사이트48006000006000004800500004800600000600000480048005000000000버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

3.5. 창 스포츠 토토 결과

A창 스포츠 토토 결과현재 행과 관련된 일련의 테이블 행에서 계산을 수행합니다. 이것은 집계 함수로 수행 할 수있는 계산 유형과 비슷합니다. 그러나 일반 집계 함수와 달리 창 스포츠 토토 결과를 사용하면 행이 단일 출력 행으로 그룹화되지 않습니다. 행은 별도의 ID를 유지합니다. 무대 뒤에서 창 스포츠 토토 결과는 쿼리 결과의 현재 행보다 더 많이 액세스 할 수 있습니다.

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

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값,주문 by조항RANK행동이 전적으로 결정되기 때문에 명시적인 매개 변수가 필요하지 않습니다.Over절.

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

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

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

empsalary에서 () 이상의 급여, 합 (Salary)을 선택하십시오.
급여 |  합집합  
--------+-------
   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 : 문서 : 9.6 : 창 젠 토토, 섹션 7.2.5PostgreSQL : 문서 : 9.6 : 롤 토토참조 페이지.

노트

[1]

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