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

9.21. 롤 토토 함수

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

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

표 9.55. 범용 롤 토토 함수

기능

설명

부분 모드

array_agg ( anynonarray ) → 임의 배열

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

아니요

array_agg ( 임의 배열 ) → 모든 배열

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

아니요

평균 ( 작은인트 ) → 숫자

평균 ( 정수 ) → 숫자

평균 ( 비긴트 ) → 숫자

평균 ( 숫자 ) → 숫자

평균 ( 진짜 ) → 배정밀도

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

평균 ( 간격 ) → 간격

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

bit_and ( smallint ) → smallint

bit_and ( 정수 ) → 정수

bit_and ( 비긴트 ) → 비긴트

bit_and ( 비트 ) → 비트

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

bit_or ( 작은int ) → smallint

bit_or ( 정수 ) → 정수

bit_or ( 비긴트 ) → 비긴트

bit_or ( 비트 ) → 비트

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

bool_and ( 부울 ) → 부울

널이 아닌 입력 값이 모두 참이면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.

bool_or ( 부울 ) → 부울

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

개수 ( * ) → 비긴트

입력 행 수를 계산합니다.

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

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

마다 ( 부울 ) → 부울

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

json_agg ( 모든 요소 ) → json

jsonb_agg ( 모든 요소 ) → jsonb

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

아니요

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

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

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

아니요

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

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

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

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

string_agg ( 텍스트, 구분자 텍스트 ) → 텍스트

string_agg ( 바이테아, 구분자 바이테아 ) → 바이테아

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

아니요

( smallint ) → bigint

합계 ( 정수 ) → 비긴트

합계 ( 비긴트 ) → 숫자

합계 ( 숫자 ) → 숫자

합계 ( 진짜 ) → 진짜

합계 ( 배정밀도 ) → 배정밀도

합계 ( 간격 ) → 간격

합계 ( ) →

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

xmlagg ( xml ) → xml

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

아니요

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

롤 토토 함수array_agg, json_agg, jsonb_agg, json_object_agg, jsonb_object_agg, string_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 개수(*);

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

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

표 9.56. 통계용 롤 토토 함수

기능

설명

부분 모드

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 ( 숫자_유형 ) → 배정밀도진짜또는배정밀도, 그렇지 않은 경우숫자

이것은 다음의 과거 별칭입니다.stddev_samp.

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

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

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

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

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

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

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

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

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

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


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

표 9.57. 순서 집합 롤 토토 함수

기능

설명

부분 모드

모드 () 그룹 내 ( 주문 방법 모든 요소 ) → 모든 요소

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

아니요

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

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

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

아니요

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

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

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

아니요

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

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

아니요

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

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

아니요

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

표 9.58. 가설 집합 롤 토토 함수

기능

설명

부분 모드

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

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

아니요

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

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

아니요

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

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

아니요

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

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

아니요

표 9.59. 그룹화 작업

기능

설명

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

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


다음에 표시된 그룹화 작업표 9.59그룹화 세트와 함께 사용됩니다(참조섹션 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행)

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