윈 토토 함수입력 값 세트에서 단일 결과를 계산합니다. 내장 된 일반 목적 윈 토토 기능은에 나열되어 있습니다.표 9.52및 통계 윈 토토의표 9.53. 내장 그룹 내 순서 세트 윈 토토 함수는에 나열되어 있습니다.표 9.54내장 된 그룹 내 가상 세트가있는 동안표 9.55. 윈 토토 함수와 밀접한 관련이있는 그룹화 작업은에 나와 있습니다.표 9.56. 윈 토토 함수에 대한 특별 구문 고려 사항은에 설명되어 있습니다.섹션 4.2.7. 찾다43범퍼카 토토6463추가 입문 정보는
표 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 인 경우, 그렇지 않으면 false |
bool_or ( |
bool |
bool |
예 | 적어도 하나의 입력 값이 true 인 경우 true |
count (*) |
bigint |
예 | 입력 행 수 | |
count ( |
Any | bigint |
예 | 값의 값에 대한 입력 행 수표현 |
Every ( |
bool |
bool |
예 | 동등한bool_and |
JSON_AGG ( |
Any |
JSON |
아니오 | JSON 배열로 널을 포함한 값을 집계합니다 |
JSONB_AGG ( |
any |
JSONB |
아니오 | NULLS를 포함한 값을 JSON 배열로 집계합니다 |
json_object_agg ( |
(AND, AND) |
JSON |
아니오 | 집계 이름/값 쌍은 JSON 객체로서; 값은 널가 될 수 있지만 이름은 아닙니다 |
JSONB_OBJECT_AGG ( |
(누구나) |
JSONB |
아니요 | 집계 이름/값 쌍은 JSON 객체로서; 값은 널가 될 수 있지만 이름은 아닙니다 |
max ( |
숫자, 문자열, 날짜/시간, 네트워크 또는 열거 유형 또는 이러한 유형의 배열 | 인수 유형과 동일 | 예 | 최대 값표현 모든 비 널 입력 값에 걸쳐 |
min ( |
숫자, 문자열, 날짜/시간, 네트워크 또는 열거 유형 또는 이러한 유형의 배열 | 인수 유형과 동일 | 예 | 최소값표현 모든 비 널 입력 값에 걸쳐 |
String_agg ( |
(텍스트 , 텍스트 ) 또는 (BYTEA , BYTEA ) |
인수 유형과 동일 | 아니오 | Delimiter로 분리 된 문자열로 연결된 비 널 입력 값 |
Sum ( |
smallint , int , bigint , Real , 이중 정밀 , 숫자 , 간격 또는Money |
bigint forsmallint 또는int 인수,숫자 forbigint 인수, 그렇지 않으면 인수 데이터 유형과 동일합니다 |
예 | 표현 모든 비 널 입력 값에 걸쳐 |
xmlagg ( |
XML |
XML |
아니오 | 23099_23148섹션 9.14.1.7) |
count
,이 함수는 행을 선택할 때 널 값을 반환합니다. 특히,Sum
노의 노선은 예상대로 0이 아닌 널을 반환합니다.array_agg
입력 행이 없을 때 빈 배열 대신 NULL을 반환합니다. 그만큼Coalesce
기능을 사용하여 필요할 때 NULL로 0 또는 빈 배열을 대체 할 수 있습니다.
지원하는 윈 토토 함수부분 모드병렬 윈 토토와 같은 다양한 최적화에 참여할 수 있습니다.
부울 윈 토토bool_and
및bool_or
표준 SQL 윈 토토에 해당Every
andany
또는일부
. forany
and일부
, 표준 구문에 내장 된 모호성이있는 것 같습니다 :
t1에서 B1 = AND ((T2에서 B2에서 SELECT B2 ...))를 선택하십시오 ...;
여기Any
하위 쿼리가 부울 값으로 한 행을 반환하는 경우 서브 쿼리를 도입하거나 윈 토토 함수로 간주 될 수 있습니다. 따라서이 집계에는 표준 이름이 주어질 수 없습니다.
다른 SQL 데이터베이스 관리 시스템과 협력하는 데 익숙한 사용자는의 성능에 실망 할 수 있습니다count
전체 테이블에 적용될 때 윈 토토. 쿼리 :
Undable에서 count (*)를 선택하십시오.
테이블 크기에 비례하는 노력이 필요합니다 :PostgreSQL표에 모든 행을 포함하는 전체 테이블 또는 인덱스 전체를 스캔해야합니다.
윈 토토 함수array_agg
, JSON_AGG
, JSONB_AGG
, json_object_agg
, JSONB_OBJECT_AGG
, String_agg
및xmlagg
및 유사한 사용자 정의 윈 토토 함수는 입력 값의 순서에 따라 의미있는 다른 결과 값을 생성합니다. 이 순서는 기본적으로 지정되지 않지만 AN을 작성하여 제어 할 수 있습니다.주문 by
집계 호출 내의 조항, 다음에 표시된대로섹션 4.2.7. 또는 정렬 된 서브 쿼리에서 입력 값을 공급하는 것이 일반적으로 작동합니다. 예를 들어:
XMLAGG (X)를 선택하여 (Y DESC로 테스트 주문에서 X를 선택) 탭;
외부 쿼리 레벨에 조인과 같은 추가 처리가 포함되어 있으면이 접근법이 실패 할 수 있다고 조심하십시오. 이로 인해 윈 토토가 계산되기 전에 서브 쿼리의 출력을 다시 주문할 수 있기 때문입니다..
표 9.53통계 분석에 일반적으로 사용되는 윈 토토 함수를 보여줍니다. (이들은 더 많은 공동체가 사용하는 집계의 목록을 어지럽히는 것을 피하기 위해 분리되어 있습니다.) 설명에서 언급 한 경우n
, 모든 입력 표현식이 널이 아닌 입력 행의 수를 의미합니다. 모든 경우에, 계산이 의미가 없다면 NULL이 반환됩니다. 예를 들어n
는 0입니다.
표 9.53. 통계에 대한 윈 토토 함수
표 9.54를 사용하는 일부 윈 토토 함수를 보여줍니다.주문 세트 윈 토토구문. 이러한 기능은 때때로라고도합니다.“역 분포”기능.
표 9.54. 주문 세트 윈 토토 함수
모든 윈 토토에 나열된표 9.54정렬 된 입력에서 널 값을 무시하십시오. 를 취하는 사람들을 위해fraction
매개 변수, 분수 값은 0과 1 사이 여야합니다. 그렇지 않으면 오류가 발생합니다. 그러나 널 분수 값은 단순히 널 결과를 생성합니다.
|표 9.55|PostgreSQL : 문서 : 11 : 9.21. 창 토토 캔. 각각의 경우, 윈 토토 결과는 관련 창 함수가에 반환 한 값입니다.“가상”행으로 구성된 행args
, 그러한 행이에서 계산 된 정렬 된 행 그룹에 추가 된 경우Sorted_args
.
표 9.55. 가상 세트 윈 토토 함수
이 가상 세트 집계 각각에 대해, 직접 인수 목록args
|Sorted_args
. 대부분의 내장 골재와 달리, 이러한 윈 토토는 엄격하지 않으며, 널이 포함 된 입력 행을 삭제하지 않습니다. null 값은에 지정된 규칙에 따라 정렬됩니다.주문 by
절.
그룹화 작업은 그룹화 세트와 함께 사용됩니다 (참조섹션 7.2.4) 결과 행을 구별합니다. 에 대한 논쟁그룹화
작동은 실제로 평가되지 않지만에 제공된 정확한 표현과 일치해야합니다.그룹 by
관련 쿼리 레벨의 조항. 비트는 가장 중요하지 않은 비트 인 가장 오른쪽 인수와 함께 할당됩니다. 해당 표현식이 결과 행을 생성하는 그룹화 세트의 그룹화 기준에 포함 된 경우 각 비트가 0이고, 그렇지 않은 경우 1. 예를 들어:
=
선택 *에서 items_sold;
만들기 | 모델 | 매상 -------+-------+------- foo | GT | 10 foo | 투어 | 20 바 | 도시 | 15 바 | 스포츠 | 5 (4 줄)=
Make, Model, Grouping (Make, Model), Sum (Sales)을 선택하여 Items_sold Group rollup (Make, Model);를 선택하십시오.
만들기 | 모델 | 그룹화 | 합집합 -------+-------+----------+----- foo | GT | 0 | 10 foo | 투어 | 0 | 20 바 | 도시 | 0 | 15 바 | 스포츠 | 0 | 5 foo | | 1 | 30 바 | | 1 | 20 | | 3 | 50 (7 줄)