롤 토토 함수입력 값 세트에서 단일 결과를 계산합니다. 내장 된 일반 목적 롤 토토 기능은에 나열되어 있습니다.표 9.55통계 응집체가있는 동안표 9.56. 내장 그룹 내 순서 세트 롤 토토 함수는에 나열되어 있습니다.표 9.57내장 그룹 내 가상 세트가있는 동안표 9.58. 롤 토토 함수와 밀접한 관련이있는 그룹화 작업은에 나와 있습니다.표 9.59. 롤 토토 함수에 대한 특별 구문 고려 사항은에 설명되어 있습니다.섹션 4.2.7. 찾다43젠 롤 토토6463추가 입문 정보는
지원하는 롤 토토 함수부분 모드병렬 롤 토토와 같은 다양한 최적화에 참여할 수 있습니다.
표 9.55. 일반 목적 집계 기능
기능 설명 |
부분 모드 |
---|---|
널을 포함한 모든 입력 값을 배열로 수집합니다. |
아니오 |
모든 입력 배열을 하나의 더 높은 차원의 배열로 연결합니다. (입력은 모두 같은 차원을 가져야하며 비어 있거나 널가 될 수 없습니다.) |
아니요 |
모든 비 널 입력 값의 평균 (산술 평균)을 계산합니다. |
예 |
널 비 널 입력 값을 비트와 모든 비 널 입력 값을 계산합니다. |
예 |
널 비 널 입력 값을 비트 또는 모든 비 널 입력 값을 계산합니다. |
예 |
모든 비 널 입력 값이 true 인 경우 true를 반환합니다. 그렇지 않으면 거짓. |
예 |
널 비 널 입력 값이 true 인 경우 true를 반환합니다. |
예 |
입력 행 수를 계산합니다. |
예 |
입력 값이 null이 아닌 입력 행의 수를 계산합니다. |
예 |
이것은 SQL 표준의 것과 같습니다. |
예 |
NULL을 포함한 모든 입력 값을 JSON 어레이로 수집합니다. 값은에 따라 JSON으로 변환됩니다 |
아니오 |
모든 키/값 쌍을 JSON 객체에 수집합니다. 주요 인수는 텍스트로 강요됩니다. 값 인수는에 따라 변환됩니다. |
아니오 |
널 비 널 입력 값의 최대 값을 계산합니다. 모든 숫자, 문자열, 날짜/시간 또는 열거 유형 및에 사용할 수 있습니다. |
예 |
널 비 널 입력 값의 최소값을 계산합니다. 모든 숫자, 문자열, 날짜/시간 또는 열거 유형 및에 사용할 수 있습니다. |
예 |
널이 아닌 입력 값을 문자열로 연결합니다. 첫 번째 이후의 각 값은 해당에 앞서 |
아니오 |
널 비 널 입력 값의 합을 계산합니다. |
예 |
NULL XML 입력 값을 연결합니다 (참조섹션 9.15.1.7). |
아니오 |
count
,이 함수는 행을 선택할 때 널 값을 반환합니다. 특히,Sum
OF ROWS가 예상대로 0이 아닌 숫자를 반환하고array_agg
입력 행이 없을 때 빈 배열 대신 NULL을 반환합니다. 그만큼Coalesce
기능을 사용하여 필요할 때 NULL로 0 또는 빈 배열을 대체 할 수 있습니다.
롤 토토 함수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를 선택) 탭;
외부 쿼리 레벨에 결합과 같은 추가 처리가 포함되어 있으면이 접근법이 실패 할 수 있다고 조심하십시오. 이로 인해 롤 토토가 계산되기 전에 서브 쿼리의 출력이 다시 주문 될 수 있기 때문입니다..
부울 집계bool_and
andbool_or
표준 SQL 롤 토토에 해당Every
andAny
또는일부
. PostgreSQL지원Every
하지만Any
또는일부
, 표준 구문에 내장 된 모호성이 있기 때문에 :
t1에서 B1 = any ((t2에서 b2 ...))를 선택하십시오 ...;
여기Any
하위 쿼리가 부울 값으로 한 행을 반환하는 경우 하위 쿼리를 도입하거나 롤 토토 함수로 간주 될 수 있습니다. 따라서이 집계에는 표준 이름이 주어질 수 없습니다.
다른 SQL 데이터베이스 관리 시스템과 협력하는 데 익숙한 사용자는의 성능에 실망 할 수 있습니다count
전체 테이블에 적용될 때 롤 토토. 쿼리 :
약간의 count (*)에서 선택할 수 있습니다.
표의 크기에 비례하는 노력이 필요합니다 :PostgreSQL표에 모든 행을 포함하는 전체 테이블 또는 인덱스 전체를 스캔해야합니다.
표 9.56통계 분석에 일반적으로 사용되는 롤 토토 함수를 보여줍니다. (이들은 더 많은 공동체가 사용하는 집계 목록을 어지럽히는 것을 피하기 위해 분리되어 있습니다.) 함수는 수락하는 것으로 표시됩니다numeric_type
모든 유형에 사용할 수 있습니다smallint
, 정수
, bigint
, 숫자
, Real
및이중 정밀
. 설명에 언급 된 위치n
, 모든 입력 표현식이 널이 아닌 입력 행의 수를 의미합니다. 모든 경우에, 계산이 의미가 없다면 NULL이 반환됩니다. 예를 들어n
is ZERO.
표 9.56. 통계에 대한 롤 토토 함수
표 9.57를 사용하는 일부 롤 토토 함수를 보여줍니다.주문 세트 롤 토토구문. 이러한 기능은 때때로라고도합니다.“역 분포”기능. 집계 된 입력은에 의해 소개됩니다.주문 by
직접 인수그것은 집계되지 않았지만 한 번만 계산됩니다. 이러한 모든 기능은 집계 된 입력의 널 값을 무시합니다. 를 취하는 사람들을 위해fraction
매개 변수, 분수 값은 0과 1 사이 여야합니다. 그렇지 않으면 오류가 발생합니다. 그러나 널fraction
값은 단순히 널 결과를 생성합니다.
표 9.57. 주문 세트 롤 토토 함수
각각“가상 세트”롤 토토에 나열된표 9.58|PostgreSQL : 문서 : 13 : 9.22. 창 토토 커뮤니티. 각각의 경우, 집계 결과는 관련 창 함수가에 반환 한 값입니다.“가상”행으로 구성된 행args
, 그러한 행이 |Sorted_args
. 이러한 각 기능에 대해에 나와있는 직접 인수 목록args
Sorted_args
. 대부분의 내장 골재와 달리, 이러한 롤 토토는 엄격하지 않으며, 널이 포함 된 입력 행을 삭제하지 않습니다. null 값은에 지정된 규칙에 따라 정렬됩니다.주문 by
절.
표 9.58. 가상 세트 롤 토토 함수
표 9.59. 그룹화 작업
그룹화 작업에 표시된 그룹화표 9.59그룹화 세트와 함께 사용됩니다 (참조섹션 7.2.4) 결과 행을 구별합니다. 에 대한 논쟁그룹화
함수는 실제로 평가되지 않지만에 제공된 표현식과 정확히 일치해야합니다.그룹 by
관련 쿼리 레벨의 조항. 예를 들어:
=
선택 *에서 items_sold;
Make | 모델 | 매상 -------+-------+------- foo | GT | 10 foo | 투어 | 20 바 | 도시 | 15 바 | 스포츠 | 5 (4 줄)=
Make, Model, Grouping (Make, Model), Sum (Sales)을 선택하여 Items_sold Group의 롤업 (Make, Model);를 선택하십시오.
Make | 모델 | 그룹화 | 합집합 -------+-------+----------+----- foo | GT | 0 | 10 foo | 투어 | 0 | 20 바 | 도시 | 0 | 15 바 | 스포츠 | 0 | 5 foo | | 1 | 30 바 | | 1 | 20 | | 3 | 50 (7 줄)
여기,그룹화
value0
처음 4 개의 행에서는 두 줄이 그룹화 열에 대해 정상적으로 그룹화되었음을 보여줍니다. 값1
모델
| 다음은 다음 두 줄로 그룹화되지 않았으며 값3
만들기
NOR모델
마지막 행에 그룹화되었습니다 (따라서 모든 입력 행의 집계입니다).
문서에 올바른 것이없는 것이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면