9.21. 와이즈 토토 함수#

와이즈 토토 함수입력 값 세트에서 단일 결과를 계산합니다. 내장된 범용 와이즈 토토 함수는 다음에 나열되어 있습니다.표 9.60통계 와이즈 토토가 있는 동안표 9.61. 내장된 그룹 내 정렬 집합 와이즈 토토 함수는 다음과 같습니다.표 9.62내장된 그룹 내 가상 집합이 있는 동안표 9.63. 와이즈 토토 함수와 밀접하게 관련된 그룹화 작업은 다음과 같습니다.표 9.64. 와이즈 토토 함수에 대한 특수 구문 고려 사항은 다음에서 설명됩니다.섹션 4.2.7. 문의43무지개 토토6463추가 소개 정보를 보려면.

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

아래의 모든 와이즈 토토는 선택 사항을 허용하지만주문 기준절(설명에 따름)섹션 4.2.7), 이 절은 출력이 순서의 영향을 받는 와이즈 토토에만 추가되었습니다.

표 9.60. 범용 와이즈 토토 함수

기능

설명

부분 모드

any_value ( 모든 요소 ) → 입력 유형과 동일

널이 아닌 입력 값에서 임의의 값을 반환합니다.

array_agg ( anynonarray 주문 기준 input_sort_columns ) → 임의배열

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

array_agg ( 모든 배열 주문 기준 input_sort_columns ) → 임의 배열

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

평균 ( smallint ) → 숫자

평균 ( 정수 ) → 숫자

평균 ( 비긴트 ) → 숫자

평균 ( 숫자 ) → 숫자

평균 ( 진짜 ) → 배정밀도

평균 ( 배정밀도 ) → 배정밀도

평균 ( 간격 ) → 간격

null이 아닌 모든 입력 값의 평균(산술 평균)을 계산합니다.

bit_and ( smallint ) → smallint

bit_and ( 정수 ) → 정수

bit_and ( 비긴트 ) → 비긴트

bit_and ( 비트 ) → 비트

널이 아닌 모든 입력 값의 비트별 AND를 계산합니다.

bit_or ( smallint ) → 작은int

bit_or ( 정수 ) → 정수

bit_or ( 비긴트 ) → 비긴트

bit_or ( 비트 ) → 비트

널이 아닌 모든 입력 값의 비트별 OR을 계산합니다.

bit_xor ( 작은int ) → 작은int

bit_xor ( 정수 ) → 정수

bit_xor ( 비긴트 ) → bigint

bit_xor ( 비트 ) → 비트

널이 아닌 모든 입력 값의 비트별 배타적 OR을 계산합니다. 순서가 지정되지 않은 값 집합에 대한 체크섬으로 유용할 수 있습니다.

bool_and ( 부울 ) → 부울

null이 아닌 모든 입력 값이 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

bool_or ( 부울 ) → 부울

null이 아닌 입력 값이 true이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

개수 ( * ) → 비긴트

입력 행 수를 계산합니다.

개수 ( "아무거나" ) → 비긴트

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

마다 ( 부울 ) → 부울

이것은 SQL 표준과 동일합니다.bool_and.

json_agg ( 모든 요소 주문 기준 input_sort_columns ) → json

jsonb_agg ( 모든 요소 주문 기준 input_sort_columns ) → jsonb

Null을 포함한 모든 입력 값을 JSON 배열로 수집합니다. 값은 다음과 같이 JSON으로 변환됩니다.to_json또는to_jsonb.

아니요

json_agg_strict ( 모든 요소 ) → json

jsonb_agg_strict ( 모든 요소 ) → jsonb

Null을 건너뛰고 모든 입력 값을 JSON 배열로 수집합니다. 값은 다음과 같이 JSON으로 변환됩니다.to_json또는to_jsonb.

아니요

json_arayagg ( [ 값_표현 ] [ 주문 방법 정렬_표현 ] [ { NULL | 부재 } ON NULL ] [ 돌아오는 중 데이터_유형 [ JSON 형식 [ UTF8 인코딩 중 ] ] ])

다음과 같은 방식으로 동작합니다json_array그러나 와이즈 토토 함수이므로 하나만 사용됩니다.값 표현매개변수. 만일NULL에 대한 부재이 지정되면 NULL 값은 생략됩니다. 만일주문 기준이 지정되면 요소는 입력 순서가 아닌 해당 순서로 배열에 나타납니다.

SELECT json_arayagg(v) FROM (VALUES(2),(1)) t(v)[2, 1]

아니요

json_objectagg ( [ { 키 표현 { | ':' } 값_표현 } ] [ { NULL | 부재 } ON NULL ] [ { 위드 | 없이 } 고유 [ ] ] [ 돌아오는 중 데이터_유형 [ JSON 형식 [ UTF8 인코딩 중 ] ] ])

다음과 같이 행동함json_object, 그러나 와이즈 토토 함수이므로 하나만 사용됩니다.키 표현그리고 하나값_표현매개변수.

SELECT json_objectagg(k:v) FROM (VALUES ('a'::text,current_date),('b',current_date + 1)) AS t(k,v)"a" : "2022-05-10", "b" : "2022-05-11"

아니요

json_object_agg ( "아무거나", "아무거나" 주문 기준 input_sort_columns ) → json

jsonb_object_agg ( "아무거나", "아무거나" 주문 기준 input_sort_columns ) → jsonb

모든 키/값 쌍을 JSON 개체로 수집합니다. 주요 인수는 텍스트로 강제 변환됩니다. 값 인수는 다음과 같이 변환됩니다.to_json또는to_jsonb. 값은 null일 수 있지만 키는 null일 수 없습니다.

아니요

json_object_agg_strict ( "아무거나", "아무거나" ) → json

jsonb_object_agg_strict ( "아무거나", "아무거나" ) → jsonb

모든 키/값 쌍을 JSON 개체로 수집합니다. 주요 인수는 텍스트로 강제 변환됩니다. 값 인수는 다음과 같이 변환됩니다.to_json또는to_jsonb.널은 될 수 없습니다. 만약null이면 항목을 건너뜁니다.

아니요

json_object_agg_unique ( "아무거나", "아무거나" ) → json

jsonb_object_agg_unique ( "아무거나", "아무거나" ) → jsonb

모든 키/값 쌍을 JSON 개체로 수집합니다. 주요 인수는 텍스트로 강제 변환됩니다. 값 인수는 다음과 같이 변환됩니다.to_json또는to_jsonb. 값은 null일 수 있지만 키는 null일 수 없습니다. 중복된 키가 있으면 오류가 발생합니다.

아니요

json_object_agg_unique_strict ( "아무거나", "아무거나" ) → json

jsonb_object_agg_unique_strict ( "아무거나", "아무거나" ) → jsonb

모든 키/값 쌍을 JSON 개체로 수집합니다. 주요 인수는 텍스트로 강제 변환됩니다. 값 인수는 다음과 같이 변환됩니다.to_json또는to_jsonb.널은 될 수 없습니다. 만약이 null이면 항목을 건너뜁니다. 중복된 키가 있으면 오류가 발생합니다.

아니요

최대 ( 텍스트 보기 ) → 입력 유형과 동일

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

( 텍스트 보기 ) → 입력 유형과 동일

널이 아닌 입력 값의 최소값을 계산합니다. 모든 숫자, 문자열, 날짜/시간 또는 열거형 유형에 사용할 수 있습니다.inet, 간격, , oid, pg_lsn, tid, xid8및 이러한 유형의 배열.

ra와이즈 토토e_agg ( 아무범위 ) → anymultira와이즈 토토e

ra와이즈 토토e_agg ( anymultira와이즈 토토e ) → anymultira와이즈 토토e

널이 아닌 입력 값의 합집합을 계산합니다.

아니요

ra와이즈 토토e_intersect_agg ( anyra와이즈 토토e ) → anyra와이즈 토토e

ra와이즈 토토e_intersect_agg ( anymultira와이즈 토토e ) → anymultira와이즈 토토e

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

아니요

stri와이즈 토토_agg ( 텍스트, 구분자 텍스트 ) → 텍스트

stri와이즈 토토_agg ( 바이테아, 구분자 바이테아 주문 기준 input_sort_columns ) → 바이테아

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

합계 ( smallint ) → bigint

합계 ( 정수 ) → 비긴트

합계 ( 비긴트 ) → 숫자

합계 ( 숫자 ) → 숫자

합계 ( 진짜 ) → 실제

( 배정밀도 ) → 배정밀도

합계 ( 간격 ) → 간격

합계 ( ) →

널이 아닌 입력 값의 합계를 계산합니다.

xmlagg ( xml 주문 기준 input_sort_columns ) → xml

널이 아닌 XML 입력 값을 연결합니다(참조섹션 9.15.1.8).

아니요

다음을 제외하고는 주의해야 합니다.개수, 행이 선택되지 않은 경우 이러한 함수는 null 값을 반환합니다. 특히,합계행 중 예상대로 0이 아닌 null을 반환하며array_agg입력 행이 없는 경우 빈 배열이 아닌 null을 반환합니다.합체함수는 필요한 경우 null을 0이나 빈 배열로 대체하는 데 사용할 수 있습니다.

와이즈 토토 함수array_agg, json_agg, jsonb_agg, json_agg_strict, jsonb_agg_strict, json_object_agg, jsonb_object_agg, json_object_agg_strict, jsonb_object_agg_strict, json_object_agg_unique, jsonb_object_agg_unique, json_object_agg_unique_strict, jsonb_object_agg_unique_strict, stri와이즈 토토_aggxmlagg및 유사한 사용자 정의 와이즈 토토 함수는 입력 값의 순서에 따라 의미 있게 다른 결과 값을 생성합니다. 이 순서는 기본적으로 지정되지 않지만 다음을 작성하여 제어할 수 있습니다.주문 기준에 표시된 대로 와이즈 토토 호출 내의 절섹션 4.2.7. 또는 정렬된 하위 쿼리에서 입력 값을 제공하는 것이 일반적으로 작동합니다. 예를 들어:

SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS 탭;

외부 쿼리 수준에 조인과 같은 추가 처리가 포함된 경우 이 접근 방식이 실패할 수 있다는 점에 주의하십시오. 이로 인해 와이즈 토토가 계산되기 전에 하위 쿼리의 출력이 재정렬될 수 있기 때문입니다.

참고

부울 집계bool_and그리고bool_or표준 SQL 와이즈 토토에 해당모든그리고아무거나또는일부. PostgreSQL지원마다하지만 아님모든또는일부, 표준 구문에 내장된 모호성이 있기 때문입니다.

SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;

여기모두하위 쿼리가 부울 값이 있는 하나의 행을 반환하는 경우 하위 쿼리를 도입하거나 와이즈 토토 함수로 간주될 수 있습니다. 따라서 이러한 집합체에는 표준 이름을 부여할 수 없습니다.

참고

다른 SQL 데이터베이스 관리 시스템 작업에 익숙한 사용자는 다음의 성능에 실망할 수 있습니다.개수전체 테이블에 적용될 때 집계됩니다. 다음과 같은 쿼리:

어떤 테이블에서 SELECT 개수(*);

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

표 9.61통계 분석에 일반적으로 사용되는 와이즈 토토 함수를 보여줍니다. (이들은 더 일반적으로 사용되는 집계 목록을 복잡하게 만드는 것을 피하기 위해 분리되었습니다.) 허용되는 것으로 표시된 함수숫자_유형모든 유형에 사용 가능작은int, 정수, 비긴트, 숫자, 진짜배정밀도. 설명에서 언급된 곳N은 모든 입력 식이 null이 아닌 입력 행의 개수를 의미합니다. 모든 경우에 계산이 의미가 없으면 null이 반환됩니다.N0입니다.

표 9.61. 통계용 와이즈 토토 함수

기능

설명

부분 모드

corr ( Y 배정밀도, X 배정밀도 ) → 배정밀도

상관계수를 계산합니다.

covar_pop ( Y 배정밀도, X 배정밀도 ) → 배정밀도

모집단 공분산을 계산합니다.

covar_samp ( Y 배정밀도, X 배정밀도 ) → 배정밀도

표본 공분산을 계산합니다.

regr_avgx ( Y 배정밀도, X 배정밀도 ) → 배정밀도

독립변수의 평균을 계산합니다.합계(X)/N.

regr_avgy ( Y 배정밀도, X 배정밀도 ) → 배정밀도

종속변수의 평균을 계산합니다.합계(Y)/N.

regr_count ( Y 배정밀도, X 배정밀도 ) → 비긴트

두 입력이 모두 null이 아닌 행 수를 계산합니다.

regr_intercept ( Y 배정밀도, X 배정밀도 ) → 배정밀도

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

regr_r2 ( Y 배정밀도, X 배정밀도 ) → 배정밀도

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

regr_slope ( Y 배정밀도, X 배정밀도 ) → 배정밀도

(에 의해 결정된 최소 제곱 적합 선형 방정식의 기울기를 계산합니다.X, Y) 쌍.

regr_sxx ( Y 배정밀도, X 배정밀도 ) → 배정밀도

다음을 계산합니다제곱의 합독립변수의합계(X^2) - 합계(X)^2/N.

regr_sxy ( Y 배정밀도, X 배정밀도 ) → 배정밀도

다음을 계산합니다제품 합계독립 시간 종속 변수의합계(X*Y) - 합계(X) * 합계(Y)/N.

regr_syy ( Y 배정밀도, X 배정밀도 ) → 배정밀도

다음을 계산합니다제곱의 합종속변수의합계(Y^2) - 합계(Y)^2/N.

stddev ( 숫자_유형 ) → 배정밀도for진짜또는배정밀도, 그렇지 않은 경우숫자

이것은 다음에 대한 과거 별칭입니다.stddev_samp.

stddev_pop ( 숫자_유형 ) → 배정밀도for진짜또는배정밀도, 그렇지 않은 경우숫자

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

stddev_samp ( 숫자_유형 ) → 배정밀도for실제또는배정밀도, 그렇지 않은 경우숫자

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

변량 ( 숫자_유형 ) → 배정밀도for실제또는배정밀도, 그렇지 않은 경우숫자

이것은 다음에 대한 과거 별칭입니다.var_samp.

var_pop ( 숫자_유형 ) → 배정밀도for실제또는배정밀도, 그렇지 않은 경우숫자

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

var_samp ( 숫자_유형 ) → 배정밀도for실제또는배정밀도, 그렇지 않은 경우숫자

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


표 9.62다음을 사용하는 일부 와이즈 토토 함수를 표시합니다.순서 집합 와이즈 토토구문. 이러한 함수는 때때로 다음과 같이 지칭됩니다.역분포함수. 집계된 입력은 다음과 같이 소개됩니다.주문 방법, 또한 다음을 수행할 수도 있습니다.직접 인수집계되지 않지만 한 번만 계산됩니다. 이러한 함수는 모두 집계된 입력에서 Null 값을 무시합니다. 다음을 수행하는 사람들을 위해분수매개변수, 분수 값은 0과 1 사이여야 합니다. 그렇지 않으면 오류가 발생합니다. 그러나 null분수값은 단순히 null 결과를 생성합니다.

표 9.62. 순서 집합 와이즈 토토 함수

기능

설명

부분 모드

모드 () 그룹 내 ( 주문 기준 모든 요소 ) → 모든 요소

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

아니요

백분위수_연속 ( 분수 배정밀도 ) 그룹 내 ( 주문 기준 배정밀도 ) → 배정밀도

백분위수_연속 ( 분수 배정밀도 ) 그룹 내 ( 주문 기준 간격 ) → 간격

다음을 계산합니다연속 백분위수, 지정된에 해당하는 값분수와이즈 토토된 인수 값의 정렬된 집합 내에서. 필요한 경우 인접한 입력 항목 사이를 보간합니다.

아니요

백분위수_연속 ( 분수 배정밀도[] ) 그룹 내 ( 주문 기준 배정밀도 ) → 배정밀도[]

백분위수_연속 ( 분수 배정밀도[] ) 그룹 내 ( 주문 방법 간격 ) → 간격[]

다중 연속 백분위수를 계산합니다. 결과는와 동일한 차원의 배열입니다.분수매개변수, null이 아닌 각 요소는 해당 백분위수에 해당하는 (아마도 보간된) 값으로 대체됩니다.

아니요

백분위수_디스크 ( 분수 배정밀도 ) 그룹 내 ( 주문 기준 모든 요소 ) → 모든 요소

다음을 계산합니다이산 백분위수, 순서의 위치가 지정된 값과 같거나 초과하는 정렬된 와이즈 토토 인수 값 집합 내 첫 번째 값분수. 와이즈 토토된 인수는 정렬 가능한 유형이어야 합니다.

아니요

백분위수_디스크 ( 분수 배정밀도[] ) 그룹 내 ( 주문 기준 모든 요소 ) → 임의배열

여러 개별 백분위수를 계산합니다. 결과는와 동일한 차원의 배열입니다.분수매개변수, null이 아닌 각 요소는 해당 백분위수에 해당하는 입력 값으로 대체됩니다. 와이즈 토토된 인수는 정렬 가능한 유형이어야 합니다.

아니요

각각의가설-집합다음에 나열된 집계표 9.63은(는)에 정의된 동일한 이름의 창 함수와 연결되어 있습니다.PostgreSQL : 문서 : 17 : 9.22. 창 스포츠 토토. 각각의 경우 집계의 결과는 관련 창 함수가 반환한 값입니다.가설적다음으로 구성된 행인수, 해당 행이 다음으로 표시되는 정렬된 행 그룹에 추가된 경우sorted_args. 이러한 각 함수에 대해 다음과 같은 직접 인수 목록이 제공됩니다.인수에 제공된 집계된 인수의 수 및 유형과 일치해야 합니다.sorted_args. 대부분의 기본 제공 와이즈 토토와 달리 이러한 와이즈 토토는 엄격하지 않습니다. 즉, Null이 포함된 입력 행을 삭제하지 않습니다. Null 값은에 지정된 규칙에 따라 정렬됩니다.주문 기준절.

표 9.63. 가설 집합 와이즈 토토 함수

기능

설명

부분 모드

순위 ( 인수 ) 그룹 내 ( 주문 기준 sorted_args ) → 비긴트

공백을 포함하여 가상 행의 순위를 계산합니다. 즉, 피어 그룹의 첫 번째 행의 행 번호입니다.

아니요

dense_rank ( 인수 ) 그룹 내 ( 주문 기준 sorted_args ) → 비긴트

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

아니요

퍼센트_순위 ( 인수 ) 그룹 내 ( 주문 기준 sorted_args ) → 배정밀도

가상 행의 상대 순위를 계산합니다. 즉, (순위- 1) / (총 행 - 1). 따라서 값의 범위는 0부터 1까지입니다.

아니요

cume_dist ( 인수 ) 그룹 내 ( 주문 기준 sorted_args ) → 배정밀도

누적 분포를 계산합니다. 즉 (이전 행 또는 가상 행과 피어의 행 수) / (총 행)입니다. 따라서 값의 범위는 1/입니다.N1.

아니요

표 9.64. 그룹화 작업

기능

설명

그룹화 ( group_by_expression(들) ) → 정수

어느 것을 나타내는 비트 마스크를 반환합니다.그룹별표현식은 현재 그룹화 세트에 포함되지 않습니다. 비트는 최하위 비트에 해당하는 가장 오른쪽 인수로 할당됩니다. 각 비트는 해당 식이 현재 결과 행을 생성하는 그룹화 집합의 그룹화 기준에 포함되어 있으면 0이고 포함되지 않으면 1입니다.


다음에 표시된 그룹화 작업표 9.64그룹화 세트와 함께 사용됩니다(참조섹션 7.2.4)을 사용하여 결과 행을 구별합니다. 에 대한 주장그룹화함수는 실제로 평가되지 않지만, 다음에 제공된 표현식과 정확히 일치해야 합니다.그룹별관련 쿼리 수준의 절입니다. 예를 들면:

= SELECT * FROM items_sold;만들다 | 모델 | 판매
--------+---------+-------
 푸 | GT |  10
 푸 | 투어 |  20
 바 | 도시 |  15
 바 | 스포츠 |  5
(4행)= SELECT 제조사, 모델, GROUPING(제조,모델), 합계(판매) FROM items_sold GROUP BY ROLLUP(제조,모델);만들다 | 모델 | 그룹화 | 합계
--------+-------+----------+-----
 푸 | GT |        0 | 10
 푸 | 투어 |        0 | 20
 바 | 도시 |        0 | 15
 바 | 스포츠 |        0 | 5
 푸 |       |        1 | 30
 바 |       |        1 | 20
       |       |        3 | 50
(7행)

여기는그룹화071109_712221다음을 나타냄모델다음에서 마지막 두 행으로 그룹화되지 않았으며 값3둘 다 아님을 나타냄만들다아니요모델마지막 행에서 그룹화되었습니다(따라서 모든 입력 행에 대한 집계입니다).

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.