이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.
포스트그레SQL
이전 다음

34장. SQL 확장: 토토 결과

Postgres의 집계는 상태 측면에서 표현됩니다. 전환 기능. 즉, 집계는 다음과 같이 정의될 수 있습니다. 인스턴스가 처리될 때마다 수정되는 상태입니다. 일부 상태 함수는 다음과 같은 경우 인스턴스의 특정 값을 확인합니다. 새 상태 계산(집계 생성 구문의 sfunc1) 다른 사람들은 자신의 내부 상태(sfunc2)만 추적합니다. sfunc1만 사용하는 집계를 정의하는 경우 속성 값의 실행 함수를 계산하는 집계 각 인스턴스에서. "Sum"은 이러한 집계의 예입니다. "합계"는 0부터 시작하여 항상 현재 인스턴스의 값을 더합니다. 누계에 추가됩니다. 우리는 내장된 int4pl을 사용할 것입니다. 이 추가를 수행하기 위한 Postgres입니다.

집합 complex_sum 생성(
              sfunc1 = complex_add,
              기본 유형 = 복합,
              유형1 = 복합,
              initcond1 = '(0,0)'
           );

         SELECT complex_sum(a) FROM test_complex;

         +------------+
         |복합체_합 |
         +------------+
         |(34,53.9) |
         +------------+

sfunc2만 정의하면 다음과 같은 집계를 지정합니다. 속성과 독립적으로 실행 중인 함수를 계산합니다. 각 인스턴스의 값. "Count"는 다음의 가장 일반적인 예입니다. 이런 집합체. "카운트"는 0에서 시작하여 1을 더합니다. 인스턴스 값을 무시하고 각 인스턴스의 누적 합계입니다. 여기, 우리는 내장된 int4inc 루틴을 사용하여 작업을 수행합니다. 이 루틴은 인수를 증가(1을 추가)합니다.

CREATE AGGREGATE my_count (sfunc2 = int4inc, -- 하나 추가
                                      기본 유형 = int4, stype2 = int4,
                                      initcond2 = '0')

         EMP에서 emp_count로 my_count(*)를 선택합니다.

         +----------+
         |emp_count |
         +----------+
         |5 |
         +----------+

"평균"은 두 가지 모두가 필요한 집계의 예입니다. 누계를 계산하는 함수와 합계를 계산하는 함수 실행 횟수. 모든 인스턴스가 처리되면 집계에 대한 최종 답은 누계를 다음으로 나눈 값입니다. 실행 횟수. 우리는 우리가 사용한 int4pl 및 int4inc 루틴을 사용합니다. 이전과 Postgres 정수 나누기 루틴 int4div, 합계를 개수로 나눈 값을 계산합니다.

CREATE AGGREGATE my_average (sfunc1 = int4pl, -- 합계
                                        기본 유형 = int4,
                                        유형1 = int4,
                                        sfunc2 = int4inc, -- 개수
                                        stype2 = int4,
                                        finalfunc = int4div, -- 나누기
                                        initcond1 = '0',
                                        initcond2 = '0')

         EMP에서 emp_average로 my_average(salary)를 선택합니다.

         +------------+
         |emp_평균 |
         +------------+
         |1640 |
         +------------+

이전 다음
SQL 확장: 운영자 위로 인터페이스 지수 확장