| 포스트그레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 확장: 운영자 | 위로 | 인터페이스 지수 확장 |