9.21. 집계 기능

롤 토토 함수입력 값 세트에서 단일 결과를 계산합니다. 내장 된 일반 목적 롤 토토 기능은에 나열되어 있습니다.표 9.55통계 응집체가있는 동안표 9.56. 내장 그룹 내 순서 세트 롤 토토 함수는에 나열되어 있습니다.표 9.57내장 그룹 내 가상 세트가있는 동안표 9.58. 롤 토토 함수와 밀접한 관련이있는 그룹화 작업은에 나와 있습니다.표 9.59. 롤 토토 함수에 대한 특별 구문 고려 사항은에 설명되어 있습니다.섹션 4.2.7. 찾다43젠 롤 토토6463추가 입문 정보는

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

표 9.55. 일반 목적 집계 기능

기능

설명

부분 모드

array_agg(AnynonArray) →AnyArray

널을 포함한 모든 입력 값을 배열로 수집합니다.

아니오

array_agg(AnyArray) →AnyArray

모든 입력 배열을 하나의 더 높은 차원의 배열로 연결합니다. (입력은 모두 같은 차원을 가져야하며 비어 있거나 널가 될 수 없습니다.)

아니요

avg(smallint) →숫자

avg(정수) →숫자

avg(bigint) →숫자

avg(숫자) →숫자

avg(Real) →이중 정밀도

avg(이중 정밀) →이중 정밀

avg(간격) →간격

모든 비 널 입력 값의 평균 (산술 평균)을 계산합니다.

bit_and(smallint) →smallint

bit_and(Integer) →정수

bit_and(bigint) →bigint

bit_and(비트) →비트

널 비 널 입력 값을 비트와 모든 비 널 입력 값을 계산합니다.

bit_or(smallint) →smallint

bit_or(정수) →정수

bit_or(bigint) →bigint

bit_or(비트) →bit

널 비 널 입력 값을 비트 또는 모든 비 널 입력 값을 계산합니다.

bool_and(부울) →부울

모든 비 널 입력 값이 true 인 경우 true를 반환합니다. 그렇지 않으면 거짓.

bool_or(부울) →부울

널 비 널 입력 값이 true 인 경우 true를 반환합니다.

count(*) →bigint

입력 행 수를 계산합니다.

count("Any") →bigint

입력 값이 null이 아닌 입력 행의 수를 계산합니다.

Every(부울) →부울

이것은 SQL 표준의 것과 같습니다.bool_and.

JSON_AGG(Anylement) →JSON

JSONB_AGG(Anylement) →JSONB

NULL을 포함한 모든 입력 값을 JSON 어레이로 수집합니다. 값은에 따라 JSON으로 변환됩니다to_json또는TO_JSONB.

아니오

json_object_agg( "Any", value "Any") →JSON

JSONB_OBJECT_AGG( "Any", value "Any") →JSONB

모든 키/값 쌍을 JSON 객체에 수집합니다. 주요 인수는 텍스트로 강요됩니다. 값 인수는에 따라 변환됩니다.to_json또는TO_JSONB. 값은 널가 될 수 있지만 키는 아닙니다.

아니오

max(텍스트 참조) →입력 유형과 동일

널 비 널 입력 값의 최대 값을 계산합니다. 모든 숫자, 문자열, 날짜/시간 또는 열거 유형 및에 사용할 수 있습니다.inet, 간격, Money, OID, PG_LSN, TID및 이러한 유형의 배열.

min(텍스트 참조) →입력 유형과 동일

널 비 널 입력 값의 최소값을 계산합니다. 모든 숫자, 문자열, 날짜/시간 또는 열거 유형 및에 사용할 수 있습니다.inet, 간격, Money, OID, PG_LSN, TID23185_23222

String_agg(value 텍스트, Delimiter 텍스트) →텍스트

String_agg(value BYTEA, Delimiter BYTEA) →BYTEA

널이 아닌 입력 값을 문자열로 연결합니다. 첫 번째 이후의 각 값은 해당에 앞서Delimiter(null이 아닌 경우).

아니오

Sum(smallint) →bigint

Sum(Integer) →bigint

Sum(bigint) →숫자

Sum(숫자) →숫자

Sum(Real) →Real

Sum(이중 정밀) →이중 정밀

Sum(간격) →간격

Sum(Money) →Money

널 비 널 입력 값의 합을 계산합니다.

xmlagg(XML) →XML

NULL XML 입력 값을 연결합니다 (참조섹션 9.15.1.7).

아니오

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

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

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

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

note

부울 집계bool_andandbool_or표준 SQL 롤 토토에 해당EveryandAny또는일부. PostgreSQL지원Every하지만Any또는일부, 표준 구문에 내장 된 모호성이 있기 때문에 :

t1에서 B1 = any ((t2에서 b2 ...))를 선택하십시오 ...;

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

note

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

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

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

표 9.56통계 분석에 일반적으로 사용되는 롤 토토 함수를 보여줍니다. (이들은 더 많은 공동체가 사용하는 집계 목록을 어지럽히는 것을 피하기 위해 분리되어 있습니다.) 함수는 수락하는 것으로 표시됩니다numeric_type모든 유형에 사용할 수 있습니다smallint, 정수, bigint, 숫자, Real이중 정밀. 설명에 언급 된 위치n, 모든 입력 표현식이 널이 아닌 입력 행의 수를 의미합니다. 모든 경우에, 계산이 의미가 없다면 NULL이 반환됩니다. 예를 들어nis ZERO.

표 9.56. 통계에 대한 롤 토토 함수

기능

설명

부분 모드

corr(y 이중 정밀, x 이중 정밀) →이중 정밀

상관 계수를 계산합니다.

covar_pop(y 이중 정밀, x 이중 정밀도) →더블 정밀도

인구 공분산을 계산합니다.

covar_samp(y 이중 정밀도, x 이중 정밀도) →이중 정밀도

샘플 공분산을 계산합니다.

lecr_avgx(y 이중 정밀도, X 이중 정밀도) →이중 정밀

독립 변수의 평균을 계산합니다.Sum (x)/n.

lecr_avgy(y 이중 정밀도, x 이중 정밀도) →이중 정밀도

종속 변수의 평균을 계산합니다.Sum (y)/n.

lect_count(y 이중 정밀도, x 이중 정밀도) →bigint

두 입력이 널이 아닌 행의 수를 계산합니다.

후크 intercept(y 이중 정밀도, x 이중 정밀도) →이중 정밀도

(에 의해 결정된 최소 제곱에 맞는 선형 방정식의 y 절편을 계산합니다.x, y) 쌍.

lecr_r2(y 이중 정밀, x 이중 정밀) →이중 정밀

상관 계수의 제곱을 계산합니다.

lecc_slope(y 이중 정밀도, x 이중 정밀도) →이중 정밀도

(에 의해 결정된 최소 제곱에 맞는 선형 방정식의 경사를 계산합니다.x, y) 쌍.

후회 _sxx(y 더블 정밀도, x 이중 정밀도) →더블 정밀도

계산사각형의 합독립 변수의Sum (x^2) - Sum (x)^2/n.

lecc_sxy(y 이중 정밀도, x 더블 정밀도) →이중 정밀도

계산제품의 합계독립 시간 종속 변수,Sum (x*y) - sum (x) * sum (y)/n.

lecr_syy(y 이중 정밀, x 이중 정밀) →더블 정밀도

계산사각형의 합종속 변수,Sum (y^2) - Sum (y)^2/n.

stddev(numeric_type) →이중 정밀도forReal또는이중 정밀, 그렇지 않으면숫자

이것은 역사적 별칭입니다stddev_samp.

stddev_pop(numeric_type) →이중 정밀forReal또는이중 정밀도, 그렇지 않으면숫자

입력 값의 모집단 표준 편차를 계산합니다.

stddev_samp(numeric_type) →이중 정밀forReal또는이중 정밀도, 그렇지 않으면숫자

입력 값의 샘플 표준 편차를 계산합니다.

분산(numeric_type) →이중 정밀도forReal또는이중 정밀도, 그렇지 않으면숫자

이것은 역사적 별칭입니다var_samp.

var_pop(numeric_type) →이중 정밀forReal또는이중 정밀도, 그렇지 않으면숫자

입력 값의 모집단 분산 (모집단 표준 편차의 제곱)을 계산합니다..

var_samp(numeric_type) →이중 정밀도forReal또는이중 정밀, 그렇지 않으면숫자

입력 값의 샘플 분산을 계산합니다 (샘플 표준 편차의 제곱).


표 9.57를 사용하는 일부 롤 토토 함수를 보여줍니다.주문 세트 롤 토토구문. 이러한 기능은 때때로라고도합니다.역 분포기능. 집계 된 입력은에 의해 소개됩니다.주문 by직접 인수그것은 집계되지 않았지만 한 번만 계산됩니다. 이러한 모든 기능은 집계 된 입력의 널 값을 무시합니다. 를 취하는 사람들을 위해fraction매개 변수, 분수 값은 0과 1 사이 여야합니다. 그렇지 않으면 오류가 발생합니다. 그러나 널fraction값은 단순히 널 결과를 생성합니다.

표 9.57. 주문 세트 롤 토토 함수

function

설명

부분 모드

모드()그룹 내(주문 by Anylement) →Anylement

계산모드, 집계 된 인수의 가장 빈번한 값 (여러 개의 똑같이 똑같은 값이있는 경우 첫 번째를 임의로 선택). 집계 된 인수는 정렬 가능한 유형이어야합니다.

아니오

백분위 수석(fraction 이중 정밀도)그룹 내(주문 by 이중 정밀) →이중 정밀도

백분위 수석(fraction 이중 정밀도)그룹 내(주문 by 간격) →간격

계산연속 백분위 수, 지정된 값fraction순서대로 롤 토토 된 인수 값 세트 내에서. 필요한 경우 인접한 입력 항목 사이에 보간됩니다.

아니오

백분위 수석(fractions 이중 정밀 [])그룹 내(주문 by 이중 정밀도) →이중 정밀 []

백분위 수석(FRACTION 이중 정밀 [])그룹 내(주문 by 간격) →interval []

여러 연속 백분위 수를 계산합니다. 결과는와 동일한 치수의 배열입니다.FRACTION매개 변수.

아니오

백분석 _DISC(fraction 이중 정밀)그룹 내(주문 by Anylement) →Anylement

계산이산 백분위 수, 순서대로 정렬 된 인수 값 세트 내에서 첫 번째 값은 주문의 위치가 지정된 것을 초과하거나 초과하는fraction. 롤 토토 된 인수는 정렬 가능한 유형이어야합니다.

아니오

백분위 수석(FRACTION 이중 정밀 [])그룹 내(주문 by Anylement) →AnyArray

여러 개별 백분위 수를 계산합니다. 결과는와 동일한 치수의 배열입니다.FRACTION매개 변수. 집계 된 인수는 정렬 가능한 유형이어야합니다.

아니오

각각가상 세트롤 토토에 나열된표 9.58|PostgreSQL : 문서 : 13 : 9.22. 창 토토 커뮤니티. 각각의 경우, 집계 결과는 관련 창 함수가에 반환 한 값입니다.가상행으로 구성된 행args, 그러한 행이 |Sorted_args. 이러한 각 기능에 대해에 나와있는 직접 인수 목록argsSorted_args. 대부분의 내장 골재와 달리, 이러한 롤 토토는 엄격하지 않으며, 널이 포함 된 입력 행을 삭제하지 않습니다. null 값은에 지정된 규칙에 따라 정렬됩니다.주문 by절.

표 9.58. 가상 세트 롤 토토 함수

기능

설명

부분 모드

RANK(args)그룹 내(주문 by Sorted_args) →bigint

가상 행의 순위를 계산하고 간격으로 계산합니다. 즉, 피어 그룹의 첫 번째 행의 행 번호입니다.

아니오

Dense_Rank(args)그룹 내(주문 by Sorted_args) →bigint

틈없이 가상 행의 순위를 계산합니다. 이 기능은 효과적으로 동료 그룹을 계산합니다.

아니오

퍼센트 랑크(args)그룹 내(주문 by Sorted_args) →이중 정밀도

가상 행의 상대 순위, 즉 (를 계산합니다.RANK-1) / (총 행 -1). 따라서 값은 0에서 1의 포함됩니다.

아니오

cume_dist(args)그룹 내(주문 by Sorted_args) →이중 정밀

누적 분포, 즉 (앞의 행 또는 가상 행이있는 피어) / (총 행)를 계산합니다. 따라서 값은 1/입니다.n~ 1

아니오

표 9.59. 그룹화 작업

기능

설명

그룹화(Group_By_Expression (S)) →정수

어느 것을 나타내는 약간의 마스크를 반환합니다그룹 by표현은 현재 그룹화 세트에 포함되지 않습니다. 비트는 가장 중요하지 않은 비트에 해당하는 가장 오른쪽 인수와 함께 할당됩니다. 해당 표현식이 현재 결과 행을 생성하는 그룹화 세트의 그룹화 기준에 포함 된 경우 각 비트가 0이고, 포함되지 않은 경우 1.


그룹화 작업에 표시된 그룹화표 9.59그룹화 세트와 함께 사용됩니다 (참조섹션 7.2.4) 결과 행을 구별합니다. 에 대한 논쟁그룹화함수는 실제로 평가되지 않지만에 제공된 표현식과 정확히 일치해야합니다.그룹 by관련 쿼리 레벨의 조항. 예를 들어:

= 선택 *에서 items_sold;Make | 모델 | 매상
-------+-------+-------
 foo | GT |  10
 foo | 투어 |  20
 바 | 도시 |  15
 바 | 스포츠 |  5
(4 줄)= Make, Model, Grouping (Make, Model), Sum (Sales)을 선택하여 Items_sold Group의 롤업 (Make, Model);를 선택하십시오.Make | 모델 | 그룹화 | 합집합
-------+-------+----------+-----
 foo | GT |        0 | 10
 foo | 투어 |        0 | 20
 바 | 도시 |        0 | 15
 바 | 스포츠 |        0 | 5
 foo |       |        1 | 30
 바 |       |        1 | 20
       |       |        3 | 50
(7 줄)

여기,그룹화value0처음 4 개의 행에서는 두 줄이 그룹화 열에 대해 정상적으로 그룹화되었음을 보여줍니다. 값1모델| 다음은 다음 두 줄로 그룹화되지 않았으며 값3만들기NOR모델마지막 행에 그룹화되었습니다 (따라서 모든 입력 행의 집계입니다).

정정 제출

문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면