PostgreSQL: soi kèo bóng | |||
---|---|---|---|
이전 | up | 제 9 장 기능 및 연산자 | PostgreSQL: |
집계 함수입력 값 세트에서 단일 결과를 계산합니다. 내장 된 일반 집계 함수는에 나열되어 있습니다.표 9-49및표 9-50. 내장형 순서 세트 집계 함수는에 나열되어 있습니다.표 9-51and표 9-52. 집계 함수와 밀접한 관련이있는 그룹화 작업은에 나와 있습니다.표 9-53. 집계 함수에 대한 특별 구문 고려 사항은에 설명되어 있습니다.섹션 4.2.7. 찾다섹션 2.7추가 소개 정보.
표 9-49. 일반 목적 집계 기능
기능 | 인수 유형 (s) | 반환 유형 | 설명 |
---|---|---|---|
array_agg (표현) |
모든 비 배열 유형 | 인수 유형의 배열 | 널을 포함한 입력 값, 배열에 연결 |
array_agg (표현) |
12508_12524 | 12532_12560 | 입력 배열 하나는 하나의 더 높은 차원의 배열에 연결되어 있습니다 (입력은 모두 동일한 치수를 가져야하며 비어 있거나 null이 될 수 없습니다) |
avg (표현) |
smallint, int, bigint, Real, 이중 정밀, 숫자또는간격 | 숫자정수 유형 인수의 경우이중 정밀도플로팅 포인트 인수의 경우, 그렇지 않으면 인수 데이터 유형과 동일합니다 | 모든 비 널 입력 값의 평균 (산술 평균) |
bit_and (표현) |
smallint, int, bigint또는비트 | 13521_13549 | 비트 와이드 및 모든 비 널 입력 값의 또는 없음 |
bit_or (표현) |
smallint, int, bigint또는비트 | 인수 데이터 유형과 동일 | 비트 또는 모든 비 널 입력 값의 또는 없음 |
bool_and (표현) |
bool | bool | 모든 입력 값이 true 인 경우 true |
bool_or (표현) |
bool | bool | 적어도 하나의 입력 값이 true 인 경우 true |
count (*) |
bigint | 입력 행 수 | |
count (표현) |
Any | bigint | 값의 값에 대한 입력 행 수표현 |
Every (표현) |
bool | bool | 동등한bool_and |
json_agg (표현) |
Any | JSON | NULLS를 포함한 값을 JSON 배열로 집계합니다 |
JSONB_AGG (표현) |
any | JSONB | JSON 배열로 널을 포함한 값을 집계합니다 |
json_object_agg (이름, value) |
(AND, AND) | JSON | 집계 이름/값 쌍은 JSON 객체로서; 값은 널가 될 수 있지만 이름은 아닙니다 |
jsonb_object_agg (이름, value) |
(AND, AND) | JSONB | 집계 이름/값 쌍은 JSON 객체로서; 값은 널가 될 수 있지만 이름은 아닙니다 |
max (표현) |
숫자, 문자열, 날짜/시간, 네트워크 또는 열거 유형 또는 이러한 유형의 배열 | 인수 유형과 동일 | 최대 값표현모든 비 널 입력 값에 걸쳐 |
min (표현) |
숫자, 문자열, 날짜/시간, 네트워크 또는 열거 유형 또는 이러한 유형의 배열 | 인수 유형과 동일 | 최소값표현모든 비 널 입력 값에 걸쳐 |
String_agg (표현, Delimiter) |
(텍스트, 텍스트) 또는 (BYTEA, BYTEA) | 인수 유형과 동일 | Delimiter로 분리 된 문자열에 연결된 비 널 입력 값 |
Sum (표현) |
smallint, int, bigint, Real, 이중 정밀, 숫자, 간격또는Money | bigintforsmallint또는int인수,숫자forbigint인수, 그렇지 않으면 인수 데이터 유형과 동일합니다 | 합계표현17837_17872 |
xmlagg (표현) |
XML | XML | NULL XML 값의 연결 (참조섹션 9.14.1.7) |
count
,이 함수는 행을 선택할 때 널 값을 반환합니다. 특히,Sum
OF 노 행은 예상대로 0이 아닌 널을 반환합니다.array_agg
입력 행이 없을 때 빈 배열 대신 NULL을 반환합니다. 그만큼Coalesce
기능을 사용하여 필요할 때 NULL로 0 또는 빈 배열을 대체 할 수 있습니다.
참고 :부울 집계
bool_and
andbool_or
표준 SQL 집계에 해당Every
andAny
또는일부
. forAny
and일부
, 표준 구문에 내장 된 모호성이있는 것 같습니다 :SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;여기
Any
하위 쿼리가 부울 값으로 한 행을 반환하는 경우 하위 쿼리를 도입하거나 집계 함수로 간주 될 수 있습니다. 따라서이 집계에는 표준 이름이 주어질 수 없습니다.
참고 :다른 SQL 데이터베이스 관리 시스템과 협력하는 데 익숙한 사용자는의 성능에 실망 할 수 있습니다
count
전체 테이블에 적용될 때 집계. 쿼리 :select count (*)에서 선택하십시오;테이블 크기에 비례하는 노력이 필요합니다 :PostgreSQL표에 모든 행을 포함하는 전체 테이블 또는 인덱스 전체를 스캔해야합니다.
집계 함수array_agg
, JSON_AGG
, JSONB_AGG
, json_object_agg
, JSONB_OBJECT_AGG
, String_agg
및xmlagg
및 유사한 사용자 정의 집계 함수는 입력 값의 순서에 따라 의미있게 다른 결과 값을 생성합니다. 이 순서는 기본적으로 지정되지 않지만 AN을 작성하여 제어 할 수 있습니다.주문 by집계 호출 내의 조항, 다음에 표시된대로섹션 4.2.7. 또는 정렬 된 서브 쿼리에서 입력 값을 공급하는 것이 일반적으로 작동합니다. 예를 들어:
XMLAGG (X)를 선택하여 (X)에서 탭으로 XMLAGG (X)를 선택하십시오 (X)
그러나이 구문은 SQL 표준에서 허용되지 않으며 다른 데이터베이스 시스템에 대해 휴대용이 없습니다.
표 9-5021186_21385n, 모든 입력 표현식이 널이 아닌 입력 행의 수를 의미합니다. 모든 경우에, 계산이 의미가 없다면 NULL이 반환됩니다. 예를 들어nis ZERO.
표 9-50. 통계에 대한 집계 함수
기능 | 인수 유형 | 반환 유형 | 설명 |
---|---|---|---|
corr (y, x) |
이중 정밀 | 이중 정밀 | 상관 계수 |
covar_pop (y, x) |
이중 정밀 | 이중 정밀 | 인구 공분산 |
covar_samp (y, x) |
이중 정밀 | 더블 정밀도 | 샘플 공분산 |
recr_avgx (y, x) |
이중 정밀도 | 이중 정밀 | 독립 변수 평균 (Sum (x)/n) |
lecr_avgy (y, x) |
이중 정밀 | 이중 정밀 | 종속 변수 평균 (Sum (y)/n) |
lect_count (y, x) |
이중 정밀 | bigint | 두 표현식이 아닌 입력 행 수 |
lecc_intercept (y, x) |
이중 정밀 | 이중 정밀도 | y y (에 의해 결정된 최소 제곱에 맞는 선형 방정식의 간격x, y) Pairs |
rec_r2 (y, X) |
이중 정밀 | 이중 정밀 | 상관 계수의 제곱 |
lect_slope (y, x) |
이중 정밀 | 이중 정밀 | (에 의해 결정된 최소 제곱에 맞는 선형 방정식의 경사x, y) pairs |
lect_sxx (y, x) |
이중 정밀 | 이중 정밀 | Sum (x^2) - Sum (x)^2/n("사각형의 합"독립 변수) |
lecr_sxy (y, x) |
이중 정밀 | 이중 정밀 | Sum (x*y) - Sum (x) * sum (y)/n("제품의 합"독립 시간 종속 변수) |
lecr_syy (y, x) |
이중 정밀 | 이중 정밀 | Sum (y^2) - Sum (y)^2/n("사각형의 합"종속 변수) |
stddev (표현) |
smallint, int, bigint, Real, 이중 정밀또는숫자 | 이중 정밀플로팅 포인트 인수, 그렇지 않으면숫자 | 역사적 별칭을위한stddev_samp |
stddev_pop (표현) |
smallint, int, bigint, Real, 이중 정밀또는숫자 | 이중 정밀플로팅 포인트 인수, 그렇지 않으면숫자 | 입력 값의 인구 표준 편차 |
stddev_samp (표현27313_27316 |
smallint, int, bigint, Real, 이중 정밀또는숫자 | 이중 정밀플로팅 포인트 인수, 그렇지 않으면숫자 | 입력 값의 샘플 표준 편차 |
분산 (표현) |
smallint, int, bigint, Real, 이중 정밀또는숫자 | 이중 정밀플로팅 포인트 인수, 그렇지 않으면숫자 | 역사적 별칭을위한var_samp |
var_pop (표현) |
smallint, int, bigint, real, 이중 정밀또는숫자 | 이중 정밀플로팅 포인트 인수, 그렇지 않으면숫자 | 입력 값의 인구 분산 (모집단 표준 편차의 제곱) |
var_samp (28783_28795) |
smallint, int, bigint, Real, 이중 정밀또는숫자 | 이중 정밀플로팅 포인트 인수, 그렇지 않으면숫자 | 입력 값의 샘플 분산 (샘플 표준 편차의 제곱) |
표 9-51를 사용하는 일부 집계 함수를 보여줍니다.주문 세트 집계구문. 이러한 기능은 때때로라고도합니다."역 분포"기능.
표 9-51. 주문 세트 집계 함수
기능 | 직접 인수 유형 (S) | 집계 인수 유형 (S) | 반환 유형 | 설명 |
---|---|---|---|---|
mode () 그룹 내 모드 (order bySort_Expression) |
정렬 가능한 유형 | 정렬 식과 동일 | 가장 빈번한 입력 값을 반환합니다 (여러 개의 똑같이 똑같은 결과가있는 경우 첫 번째 첫 번째 선택 값) | |
백분위 수석 (fraction) 그룹 내 (주문 bySort_Expression) |
이중 정밀도 | 이중 정밀도또는간격 | 30567_30592 | 연속 백분위 수 : 순서에서 지정된 분수에 해당하는 값을 반환하고 필요한 경우 인접한 입력 항목간에 보간 |
백분위 수석 (fractions) 그룹 내 (주문 bySort_Expression) |
이중 정밀 [] | 이중 정밀도또는간격 | 정렬 식 유형 배열 | 다중 연속 백분위 수 :의 모양과 일치하는 결과 배열을 반환합니다FRACTION매개 변수, 각각이 아닌 요소가 해당 백분위 수에 해당하는 값으로 대체 |
백분석 _DISC (fraction) 그룹 내의 (주문Sort_Expression) |
이중 정밀 | 정렬 가능한 유형 | 정렬 식과 동일 | 개별 백분위 수 : 주문의 위치가 지정된 분수를 초과하거나 초과하는 첫 번째 입력 값을 반환합니다 |
백분석 _DISC (FRACTION) 그룹 내 (주문 bySort_Expression) |
이중 정밀 [] | 정렬 가능한 유형 | 정렬 식 유형 배열 | 다중 개별 백분위 수 :의 모양과 일치하는 결과의 배열을 반환합니다fractions매개 변수, 각각의 비 널 요소가 해당 백분위 수에 해당하는 입력 값으로 대체 |
나열된 모든 집계32402_32414정렬 된 입력에서 널 값을 무시하십시오. 를 취하는 사람들을 위해fraction매개 변수, 분수 값은 0과 1 사이 여야합니다. 그렇지 않으면 오류가 발생합니다. 그러나 널 분수 값은 단순히 널 결과를 생성합니다.
에 나열된 각 집계표 9-52에 정의 된 동일한 이름의 창 함수와 관련이 있습니다섹션 9.21. 각각의 경우, 집계 결과는 관련 창 함수가에 반환 한 값입니다."가상"행으로 구성된 행args, 그러한 행이 정렬 된 줄 그룹에 추가 된 경우Sorted_args.
표 9-52. 가상 세트 집계 함수
기능 | 직접 인수 유형 (S) | 집계 인수 유형 (S) | 반환 유형 | 설명 |
---|---|---|---|---|
RANK (args) 그룹 내 (order bySorted_args) |
variadic "Any" | variadic "Any" | bigint | 중복 행에 대한 간격이있는 가상 행의 순위 |
Dense_Rank (args) 그룹 내 (주문 내Sorted_args) |
variadic "Any" | variadic "Any" | bigint | 간격없이 가상의 행의 순위 |
퍼센트 랑크 (args) 그룹 내 (order bySorted_args) |
variadic 34666_34673 | variadic "Any" | 이중 정밀도 | 0 ~ 1 범위의 가상 행의 상대 순위 |
cume_dist (args) 그룹 내 (주문 by)Sorted_args) |
variadic "Any" | variadic "Any" | 이중 정밀도 | 35229_35285n~ 1 |
이 가상 세트 집계 각각에 대해, 직접 인수 목록args에 주어진 집계 된 인수의 수와 유형과 일치해야합니다.Sorted_args. 대부분의 내장 골재와 달리, 이러한 집계는 엄격하지 않으며, 널이 포함 된 입력 행을 삭제하지 않습니다. null 값은에 지정된 규칙에 따라 정렬됩니다.주문 by절.
그룹화 작업은 그룹화 세트와 함께 사용됩니다 (참조섹션 7.2.4) 결과 행을 구별합니다. 에 대한 논쟁그룹화작동은 실제로 평가되지 않지만에 제공된 정확한 표현과 일치해야합니다.그룹 by36739_37021
= 선택 *에서 initems_sold;만들기 | 모델 | 매상 -------+-------+------- foo | GT | 10 foo | 투어 | 20 바 | 도시 | 15 바 | 스포츠 | 5 (4 줄)= rollup (make, model)에 의한 imps _sold 그룹의 제조업, 모델, 그룹화 (제조, 모델), 합 (판매);를 선택하십시오.만들기 | 모델 | 그룹화 | 합집합 -------+-------+----------+----- foo | GT | 0 | 10 foo | 투어 | 0 | 20 바 | 도시 | 0 | 15 바 | 스포츠 | 0 | 5 foo | | 1 | 30 바 | | 1 | 20 | | 3 | 50 (7 줄)