와이즈 토토 함수입력 값 세트에서 단일 결과를 계산합니다. 내장된 범용 와이즈 토토 함수는 다음에 나열되어 있습니다.표 9.52및 통계 와이즈 토토표 9.53. 내장된 그룹 내 정렬 집합 와이즈 토토 함수는 다음과 같습니다.표 9.54그룹 내에 내장된 가상 집합이 있는 동안표 9.55. 와이즈 토토 함수와 밀접하게 관련된 그룹화 작업은 다음과 같습니다.표 9.56. 와이즈 토토 함수에 대한 특수 구문 고려 사항은 다음에서 설명됩니다.섹션 4.2.7. 문의PostgreSQL : 문서 : 10 : 2.7. 토토 결과 기능추가 소개 정보를 확인하세요.
표 9.52. 범용 와이즈 토토 함수
| 기능 | 인수 유형 | 반환 유형 | 부분 모드 | 설명 |
|---|---|---|---|---|
array_agg( |
배열이 아닌 모든 유형 | 인수 유형의 배열 | 아니요 | 널을 포함한 입력 값이 배열로 연결됨 |
array_agg( |
모든 배열 유형 | 인수 데이터 유형과 동일 | 아니요 | 하나의 더 높은 차원의 배열로 연결된 입력 배열(입력은 모두 동일한 차원을 가져야 하며 비어 있거나 null일 수 없음) |
평균( |
작은int, int, 비긴트, 진짜, 배정밀도, 숫자또는간격 |
숫자정수형 인수의 경우,배정밀도부동 소수점 인수의 경우, 그렇지 않으면 인수 데이터 유형과 동일 |
예 | null이 아닌 모든 입력 값의 평균(산술 평균) |
bit_and( |
smallint, int, 비긴트또는비트 |
인수 데이터 유형과 동일 | 예 | null이 아닌 모든 입력 값의 비트 AND, 또는 없으면 null |
bit_or( |
smallint, int, 비긴트또는비트 |
인수 데이터 유형과 동일 | 예 | null이 아닌 모든 입력 값의 비트별 OR, 또는 없으면 null |
bool_and( |
부울 |
부울 |
예 | 모든 입력 값이 true이면 true, 그렇지 않으면 false |
bool_or( |
부울 |
부울 |
예 | 적어도 하나의 입력 값이 true이면 true, 그렇지 않으면 false |
개수(*) |
비긴트 |
예 | 입력 행 수 | |
개수( |
모든 | 비긴트 |
예 | 값이 있는 입력 행 수표현널이 아닙니다 |
모든( |
부울 |
부울 |
예 | 동등함bool_and |
json_agg( |
모든 |
json |
아니요 | null을 포함한 값을 JSON 배열로 와이즈 토토합니다. |
jsonb_agg( |
모든 |
jsonb |
아니요 | Null을 포함한 값을 JSON 배열로 와이즈 토토합니다. |
json_object_agg( |
(아무거나, 아무거나) |
json |
아니요 | 이름/값 쌍을 JSON 객체로 집계합니다. 값은 null일 수 있지만 이름은 될 수 없습니다. |
jsonb_object_agg( |
(아무거나, 아무거나) |
jsonb |
아니요 | 이름/값 쌍을 JSON 객체로 집계합니다. 값은 null일 수 있지만 이름은 될 수 없습니다. |
최대( |
모든 숫자, 문자열, 날짜/시간, 네트워크, 열거형 유형 또는 이러한 유형의 배열 | 인수 유형과 동일 | 예 | 최대값표현null이 아닌 모든 입력 값에 걸쳐 |
분( |
모든 숫자, 문자열, 날짜/시간, 네트워크, 열거형 유형 또는 이러한 유형의 배열 | 인수 유형과 동일 | 예 | 최소값표현null이 아닌 모든 입력 값에 걸쳐 |
string_agg( |
(텍스트, 텍스트) 또는 (바이테아, 바이테아) |
인수 유형과 동일 | 아니요 | 문자열로 연결되고 구분 기호로 구분된 null이 아닌 입력 값 |
합계( |
작은int, int, 비긴트, 진짜, 배정밀도, 숫자, 간격, 또는돈 |
비긴트forsmallint또는int인수,숫자for비긴트인수, 그렇지 않으면 인수 데이터 유형과 동일 |
예 | 합계표현null이 아닌 모든 입력 값에 걸쳐 |
xmlagg( |
xml |
xml |
아니요 | 널이 아닌 XML 값의 연결(또한 참조섹션 9.14.1.7) |
다음을 제외하고는 주의해야 합니다.개수, 이 함수는 행이 선택되지 않은 경우 null 값을 반환합니다. 특히,합계모든 행은 예상대로 0이 아닌 null을 반환하며array_agg입력 행이 없는 경우 빈 배열이 아닌 null을 반환합니다.합체함수는 필요한 경우 null을 0이나 빈 배열로 대체하는 데 사용할 수 있습니다.
지원하는 와이즈 토토 함수부분 모드병렬 와이즈 토토와 같은 다양한 최적화에 참여할 수 있습니다.
부울 집계bool_and그리고bool_or표준 SQL 와이즈 토토에 해당모든그리고아무거나또는일부. 에 관해서는아무거나그리고일부, 표준 구문에 모호성이 내장된 것 같습니다.
SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;
여기모두하위 쿼리가 부울 값이 있는 하나의 행을 반환하는 경우 하위 쿼리를 도입하거나 와이즈 토토 함수로 간주될 수 있습니다. 따라서 이러한 집합체에는 표준 이름을 부여할 수 없습니다.
다른 SQL 데이터베이스 관리 시스템 작업에 익숙한 사용자는 다음의 성능에 실망할 수 있습니다.개수테이블 전체에 적용될 때 집계됩니다. 다음과 같은 쿼리:
sometable에서 SELECT 개수(*);
테이블 크기에 비례하는 노력이 필요합니다.PostgreSQL테이블 전체 또는 테이블의 모든 행을 포함하는 인덱스 전체를 스캔해야 합니다.
와이즈 토토 함수array_agg, json_agg, jsonb_agg, json_object_agg, jsonb_object_agg, string_agg및xmlagg은 유사한 사용자 정의 와이즈 토토 함수와 마찬가지로 입력 값의 순서에 따라 의미 있는 결과 값이 달라집니다. 이 순서는 기본적으로 지정되지 않지만 다음을 작성하여 제어할 수 있습니다.주문 기준다음과 같이 집계 호출 내의 절섹션 4.2.7. 또는 정렬된 하위 쿼리에서 입력 값을 제공하는 것이 일반적으로 작동합니다. 예를 들면:
SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS 탭;
외부 쿼리 수준에 조인과 같은 추가 처리가 포함된 경우 이 접근 방식이 실패할 수 있다는 점에 주의하십시오. 이로 인해 와이즈 토토가 계산되기 전에 하위 쿼리의 출력이 재정렬될 수 있기 때문입니다.
표 9.53통계 분석에 일반적으로 사용되는 와이즈 토토 함수를 보여줍니다. (이들은 더 일반적으로 사용되는 집계 목록이 복잡해지는 것을 피하기 위해 분리되었습니다.) 설명에 언급된 곳N는 모든 입력 식이 null이 아닌 입력 행의 개수를 의미합니다. 모든 경우에 계산이 의미가 없으면 null이 반환됩니다.N0입니다.
표 9.53. 통계용 와이즈 토토 함수
표 9.54다음을 사용하는 일부 와이즈 토토 함수를 표시합니다.순서 집합 와이즈 토토구문. 이러한 함수는 때때로 다음과 같이 지칭됩니다.“역분포”함수.
표 9.54. 순서 집합 와이즈 토토 함수
다음에 나열된 모든 집계표 9.54정렬된 입력에서 null 값을 무시합니다. 다음을 수행하는 사람들을 위해분수매개변수, 분수 값은 0과 1 사이여야 합니다. 그렇지 않으면 오류가 발생합니다. 그러나 null 분수 값은 단순히 null 결과를 생성합니다.
다음에 나열된 각 집계표 9.55은에 정의된 동일한 이름의 창 함수와 연결되어 있습니다.PostgreSQL : 문서 : 10 : 9.21. 창 롤 토토. 각 경우에 와이즈 토토 결과는 관련 창 함수가 반환한 값입니다.“가설적”다음으로 구성된 행인수, 해당 행이에서 계산된 정렬된 행 그룹에 추가된 경우sorted_args.
표 9.55. 가설 집합 와이즈 토토 함수
이러한 각 가상 집합 집계에 대해 직접 인수 목록은 다음과 같습니다.인수에 제공된 집계된 인수의 수 및 유형과 일치해야 합니다.sorted_args. 대부분의 기본 제공 와이즈 토토와 달리 이러한 와이즈 토토는 엄격하지 않습니다. 즉, Null이 포함된 입력 행을 삭제하지 않습니다. Null 값은에 지정된 규칙에 따라 정렬됩니다.주문 기준절.
그룹화 작업은 그룹화 세트와 함께 사용됩니다(참조섹션 7.2.4)을 사용하여 결과 행을 구별합니다. 에 대한 주장그룹화연산은 실제로 평가되지 않지만, 다음에 제공된 표현식과 정확히 일치해야 합니다.그룹별관련 쿼리 수준의 절입니다. 비트는 최하위 비트인 가장 오른쪽 인수로 할당됩니다. 해당 식이 결과 행을 생성하는 그룹화 집합의 그룹화 기준에 포함되어 있으면 각 비트는 0이고, 그렇지 않으면 1입니다. 예를 들면:
=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행)