9.21. 집계 기능

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

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

표 9.57. 일반 목적 집계 기능

기능

설명

부분 모드

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_xor(smallint) →smallint

bit_xor(Integer) →Integer

bit_xor(bigint) →bigint

bit_xor(비트) →비트

비트가 아닌 독점 또는 모든 비 널 입력 값을 계산합니다. 정렬되지 않은 값 세트에 대한 체크섬으로 유용 할 수 있습니다.

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, TID및 이러한 유형의 배열.

range_agg(value AnyRange) →Anymultirange

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

아니오

range_intersect_agg(value AnyRange) →AnyRange

range_intersect_agg(value Anymultirange) →Anymultirange

널이 아닌 입력 값의 교차점을 계산합니다.

아니오

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 NO ROWS가 예상대로 0이 아닌 널을 반환하고array_agg입력 행이 없을 때 빈 배열 대신 NULL을 반환합니다. 그만큼Coalesce필요할 때 널으로 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_andbool_or표준 SQL 토토 꽁 머니에 해당Everyandany또는일부. PostgreSQL지원Every그러나any또는일부, 표준 구문에 내장 된 모호성이 있기 때문에 :

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

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

Note

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

약간의 count (*)에서 선택하십시오;

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

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

표 9.58. 통계에 대한 토토 꽁 머니 함수

기능

설명

부분 모드

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

상관 계수를 계산합니다.

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

인구 공분산 계산.

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

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

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

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

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

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

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

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

후크 린 트리 셉트(y 이중 정밀도, x 이중 정밀도) →이중 정밀도

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

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

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

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

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

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

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

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

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

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

표 9.59. 주문 세트 토토 꽁 머니 함수

기능

설명

부분 모드

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

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

아니오

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

백분위 수석49799_49804fraction 더블 정밀도)그룹 내(주문 by 간격) →간격

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

아니오

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

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

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

아니오

백분석 _DISC(fraction 더블 정밀도)그룹 내(주문 by Anylement) →Anylement

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

아니오

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

다중 개별 백분위 수를 계산합니다. 결과는와 동일한 치수의 배열입니다.fractions매개 변수, 각각의 비 널 요소가 해당 백분위 수에 해당하는 입력 값으로 대체된다. 토토 꽁 머니 된 인수는 정렬 가능한 유형이어야합니다.

아니오

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

표 9.60. 가상 세트 토토 꽁 머니 함수

기능

설명

부분 모드

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.61. 그룹화 작업

기능

설명

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

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


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

= 선택 *에서 items_sold;만들기 | 모델 | 매상
-------+-------+-------
 foo | GT |  10
 foo | 투어 |  20
 바 | 도시 |  15
 바 | 스포츠 |  5
(4 줄)= rollup (make, model)에 의한 items_sold 그룹에서 제조, 모델, 그룹화 (제조, 모델), 합 (판매)을 선택하십시오.만들기 | 모델 | 그룹화 | 합집합
-------+-------+----------+-----
 foo | GT |        0 | 10
 foo | 투어 |        0 | 20
 바 | 도시 |        0 | 15
 바 | 스포츠 |        0 | 5
 foo |       |        1 | 30
 바 |       |        1 | 20
       |       |        3 | 50
(7 줄)

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

정정 제출

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