이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다Postgresql: Tài liệu: 17: 9.21. Hàm tổ토토 hợp버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

9.20. 집계 기능

와이즈 토토 함수입력 값 세트에서 단일 결과를 계산합니다. 내장 된 일반 목적 와이즈 토토 기능은에 나열되어 있습니다.114PostgreSQL : 문서 : 10 : 9.20. 집계 기능60및 통계 와이즈 토토의표 9.53. 내장 그룹 내 순서 세트 와이즈 토토 함수는에 나열되어 있습니다.표 9.54내장 된 그룹 내 가상 세트가있는 동안표 9.55. 와이즈 토토 함수와 밀접한 관련이있는 그룹화 작업은에 나와 있습니다.표 9.56. 와이즈 토토 함수에 대한 특별 구문 고려 사항은에 설명되어 있습니다.섹션 4.2.7. 찾다PostgreSQL : 문서 : 10 : 2.7. 토토 결과 기능추가 입문 정보는

표 9.52. 일반 목적 집계 기능

기능 인수 유형 (S) 반환 유형 부분 모드 설명
array_agg (표현) 모든 비 배열 유형 인수 유형 배열 아니오 널을 포함한 입력 값, 배열에 연결
array_agg (표현) 모든 배열 유형 인수 데이터 유형과 동일 아니오 입력 배열 하나는 하나의 높은 차원의 배열에 연결되어 있습니다 (입력은 모두 동일한 치수를 가져야하며 비어 있거나 무일하게 할 수 없습니다)
avg (표현) smallint, int, bigint, Real, 이중 정밀, 숫자, 또는간격 숫자정수 유형 인수의 경우이중 정밀플로팅 포인트 인수의 경우, 그렇지 않으면 인수 데이터 유형과 동일합니다 모든 비 널 입력 값의 평균 (산술 평균)
bit_and (표현) smallint, int, bigint또는비트 인수 데이터 유형과 동일 비트 와이드 및 모든 비 널 입력 값의 또는 없으면 널
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 아니오 JSON 배열로 NULLS를 포함한 값을 집계합니다
JSONB_AGG (표현) any JSONB 아니오 JSON 배열로 널을 포함한 값을 집계합니다
json_object_agg (이름, value) (누구나) 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인수, 그렇지 않으면 인수 데이터 유형과 동일합니다 합계표현모든 비 널 입력 값에 걸쳐
xmlagg (표현) XML XML 아니오 널 비 널 XML 값의 연결 (참조섹션 9.14.1.7)

count,이 함수는 행을 선택할 때 널 값을 반환합니다. 특히,Sum노의 노선은 예상대로 0이 아닌 널을 반환합니다.array_agg입력 행이 없을 때 빈 배열 대신 NULL을 반환합니다. 그만큼Coalesce기능을 사용하여 필요할 때 NULL로 0 또는 빈 배열을 대체 할 수 있습니다.

지원하는 와이즈 토토 함수부분 모드병렬 와이즈 토토와 같은 다양한 최적화에 참여할 수 있습니다.

note

부울 골재bool_andandbool_or표준 SQL 와이즈 토토에 해당EveryandAny또는일부. forAnyand일부, 표준 구문에 내장 된 모호성이있는 것 같습니다 :

선택 B1 = ATH ((T2에서 B2에서 선택한 B2 ...))에서 t1에서 ...;

여기Any하위 쿼리가 부울 값으로 한 행을 반환하는 경우 하위 쿼리를 도입하거나 와이즈 토토 함수로 간주 될 수 있습니다. 따라서이 집계에는 표준 이름이 주어질 수 없습니다.

note

다른 SQL 데이터베이스 관리 시스템과 협력하는 데 익숙한 사용자는의 성능에 실망 할 수 있습니다count전체 테이블에 적용될 때 와이즈 토토. 쿼리 :

약간의 count (*)에서 선택할 수 있습니다.

테이블 크기에 비례하는 노력이 필요합니다 :PostgreSQL표에 모든 행을 포함하는 전체 테이블 또는 인덱스 전체를 스캔해야합니다.

와이즈 토토 함수array_agg, JSON_AGG, JSONB_AGG, json_object_agg, JSONB_OBJECT_AGG, String_aggxmlagg및 유사한 사용자 정의 와이즈 토토 함수는 입력 값의 순서에 따라 의미있는 다른 결과 값을 생성합니다. 이 순서는 기본적으로 지정되지 않지만 AN을 작성하여 제어 할 수 있습니다.주문 by다음에 표시된대로 집계 호출 내의 조항섹션 4.2.7. 또는 정렬 된 서브 쿼리에서 입력 값을 공급하는 것이 일반적으로 작동합니다. 예를 들어:

XMLAGG (X)를 선택하여 (Y DESC로 테스트 주문에서 X를 선택) 탭;

외부 쿼리 레벨에 조인과 같은 추가 처리가 포함되어 있으면이 접근법이 실패 할 수 있다고 조심하십시오. 이로 인해 와이즈 토토가 계산되기 전에 서브 쿼리의 출력이 재정렬 될 수 있기 때문입니다..

표 9.53통계 분석에 일반적으로 사용되는 와이즈 토토 함수를 보여줍니다. (이들은 더 많은 공동체가 사용하는 집계의 목록을 어지럽히는 것을 피하기 위해 분리되어 있습니다.) 설명에서 언급 한 경우n, 모든 입력 표현식이 널이 아닌 입력 행의 수를 의미합니다. 모든 경우에, 계산이 의미가 없다면 NULL이 반환됩니다. 예를 들어nis ZERO.

표 9.53. 통계에 대한 와이즈 토토 함수

기능 인수 유형 반환 유형 부분 모드 설명
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) 이중 정밀도 double precision Sum (x^2) - Sum (x)^2/n(사각형의 합독립 변수)
lecr_sxy (y, x) 이중 정밀 이중 정밀 Sum (x*y) - Sum (x) * sum (y)/n(제품의 합계독립 시간 종속 변수)
juc_syy (y, x32227_32230 이중 정밀도 이중 정밀 Sum (y^2) - Sum (y)^2/n(사각형의 합종속 변수)
stddev (표현) smallint, int, bigint, Real, 이중 정밀또는숫자 더블 정밀도플로팅 포인트 인수, 그렇지 않으면숫자 역사적 별칭을위한stddev_samp
stddev_pop (표현) smallint, int, bigint, Real, 이중 정밀도또는숫자 이중 정밀도플로팅 포인트 인수, 그렇지 않으면숫자 입력 값의 인구 표준 편차
stddev_samp (표현) smallint, int, bigint, Real, 이중 정밀도또는숫자 이중 정밀도플로팅 포인트 인수, 그렇지 않으면숫자 입력 값의 샘플 표준 편차
분산(표현) smallint, int, bigint, Real, 이중 정밀도또는숫자 이중 정밀도플로팅 포인트 인수, 그렇지 않으면숫자 역사적 별칭을위한var_samp
var_pop(표현) smallint, int, bigint, Real, 이중 정밀도또는숫자 이중 정밀플로팅 포인트 인수, 그렇지 않으면숫자 입력 값의 인구 분산 (모집단 표준 편차의 제곱)
var_samp(표현) smallint, int, bigint, Real, 이중 정밀또는숫자 이중 정밀도플로팅 포인트 인수, 그렇지 않으면숫자 입력 값의 샘플 분산 (샘플 표준 편차의 제곱)

표 9.54를 사용하는 일부 와이즈 토토 함수를 보여줍니다.주문 세트 와이즈 토토구문. 이러한 기능은 때때로라고도합니다.역 분포기능.

표 9.54. 주문 세트 와이즈 토토 함수

기능 직접 인수 유형 (S) 집계 인수 유형 (S) 반환 유형 부분 모드 설명
mode () 그룹 내 모드 (order bySort_Expression) 정렬 가능한 유형 정렬 식과 동일 아니오 가장 빈번한 입력 값을 반환합니다 (똑같이 똑같이 똑같은 결과가있는 경우 첫 번째 값을 임의로 선택)
백분석 _cont (fraction) 그룹 내 (order by)Sort_Expression) 이중 정밀 이중 정밀도또는간격 정렬 식과 동일 아니오 연속 백분위 수 : 순서에서 지정된 분수에 해당하는 값을 반환하고 필요한 경우 인접한 입력 항목 사이를 보간
백분석 _cont (fractions) 그룹 내 (order bySort_Expression) 이중 정밀 [] 이중 정밀또는간격 정렬 식 유형의 배열 아니오 다중 연속 백분위 수 :의 모양과 일치하는 결과 배열을 반환합니다fractions매개 변수, 각각의 비 널 요소가 해당 백분위 수에 해당하는 값으로 대체
백분석 _disc (fraction) 그룹 내 (주문 내)Sort_Expression) 이중 정밀도 정렬 가능한 유형 정렬 식과 동일 아니오 개별 백분위 수 : 주문의 위치가 지정된 분수를 초과하거나 초과하는 첫 번째 입력 값을 반환합니다
백분석 _disc (FRACTION) 그룹 내 (주문 내Sort_Expression) 이중 정밀 [] 정렬 가능한 유형 정렬 식 유형 배열 아니오 다중 개별 백분위 수 :의 모양과 일치하는 결과 배열을 반환합니다FRACTION매개 변수, 각각이 아닌 요소가 해당 백분위 수에 해당하는 입력 값으로 대체

모든 와이즈 토토에 나열된표 9.54정렬 된 입력에서 널 값을 무시하십시오. 를 취하는 사람들을 위해fraction매개 변수, 분수 값은 0과 1 사이 여야합니다. 그렇지 않으면 오류가 발생합니다. 그러나 널 분수 값은 단순히 널 결과를 생성합니다.

각각에 나열된 각 와이즈 토토표 9.55에 정의 된 동일한 이름의 창 함수와 관련이 있습니다PostgreSQL : 문서 : 10 : 9.21. 창 롤 토토. 각각의 경우, 와이즈 토토 결과는 관련 창 함수가에 반환 한 값입니다.가상행으로 건설args, 그러한 행이 정렬 된 행 그룹에 추가 된 경우Sorted_args.

표 9.55. 가상 세트 와이즈 토토 함수

기능 직접 인수 유형 (S) 집계 인수 유형 (들) 반환 유형 부분 모드 설명
RANK (args) 그룹 내 (order bySorted_args) variadic "Any" variadic "Any" bigint 아니오 중복 행에 대한 간격이있는 가상 행의 순위
Dense_Rank (args) 그룹 내 (주문 by 내Sorted_args) variadic "Any" variadic "Any" bigint 아니오 간격이없는 가상 행의 순위
백분율_Rank (args) 그룹 내 (주문 bySorted_args) variadic "Any" variadic "Any" 이중 정밀도 아니오 0 ~ 1 범위의 가상 행의 상대 순위
cume_dist (args) 그룹 내 (order bySorted_args) variadic "Any" variadic "Any" 이중 정밀도 아니오 가상 행의 상대 순위, 1/n~ 1

이 가상 세트 집계 각각에 대해,에 나와있는 직접 인수 목록args에 주어진 와이즈 토토 된 인수의 수와 유형과 일치해야합니다.Sorted_args. 대부분의 내장 골재와 달리, 이러한 와이즈 토토는 엄격하지 않으며, 널이 포함 된 입력 행을 삭제하지 않습니다. null 값은에 지정된 규칙에 따라 정렬됩니다.주문 by절.

표 9.56. 그룹화 작업

기능 반환 유형 설명
그룹화 (args ...) 정수 현재 그룹화 세트에 포함되지 않은 인수를 나타내는 정수 비트 마스크

그룹화 작업은 그룹화 세트와 함께 사용됩니다 (참조섹션 7.2.4) 결과 행을 구별합니다. 에 대한 논쟁그룹화작동은 실제로 평가되지 않지만에 제공된 정확한 표현과 일치해야합니다.그룹 by관련 쿼리 레벨의 조항. 비트는 가장 중요하지 않은 비트 인 가장 오른쪽 인수와 함께 할당됩니다. 해당 표현식이 결과 행을 생성하는 그룹화 세트의 그룹화 기준에 포함 된 경우 각 비트가 0이고, 그렇지 않은 경우 1. 예를 들어:

= select * from initems_sold;만들기 | 모델 | 매상
-------+-------+-------
 foo | GT |  10
 foo | 투어 |  20
 바 | 도시 |  15
 바 | 스포츠 |  5
(4 줄)= Make, Model, Grouping (Make, Model), Sum (Sales)을 선택하여 롤업 (MAKE, MODEL);Make | 모델 | 그룹화 | 합집합
-------+-------+----------+-----
 foo | GT |        0 | 10
 foo | 투어 |        0 | 20
 바 | 도시 |        0 | 15
 바 | 스포츠 |        0 | 5
 foo |       |        1 | 30
 바 |       |        1 | 20
       |       |        3 | 50
(7 줄)