와이즈 토토 함수입력 값 세트에서 단일 결과를 계산합니다. 내장 된 일반 목적 와이즈 토토 기능은에 나열되어 있습니다.표 9.62통계 와이즈 토토가있는 동안표 9.63. 내장 그룹 내 순서 세트 와이즈 토토 함수는에 나열되어 있습니다.표 9.64내장 된 그룹 내 가상 세트가있는 동안표 9.65. 와이즈 토토 함수와 밀접한 관련이있는 그룹화 작업은에 나와 있습니다.표 9.66. 와이즈 토토 함수에 대한 특별 구문 고려 사항은에 설명되어 있습니다.섹션 4.2.7. 찾다PostgreSQL : 문서 : 18 : 2.7. 배트맨 와이즈 토토 기능추가 입문 정보는
지원하는 와이즈 토토 함수부분 모드병렬 와이즈 토토와 같은 다양한 최적화에 참여할 수 있습니다.
아래의 모든 와이즈 토토는 선택 사항을 수락합니다주문 by
절 (extrended섹션 4.2.7),이 조항은 주문에 의해 출력이 영향을받는 와이즈 토토에만 추가되었습니다.
표 9.62. 일반 목적 집계 기능
기능 설명 |
부분 모드 |
---|---|
널이 아닌 입력 값에서 임의의 값을 반환합니다. |
예 |
널을 포함한 모든 입력 값을 배열로 수집합니다. |
예 |
모든 입력 배열을 하나의 높은 차원의 배열로 연결합니다. (입력은 모두 같은 차원을 가져야하며 비어 있거나 널가 될 수 없습니다.) |
예 |
모든 비 널 입력 값의 평균 (산술 평균)을 계산합니다. |
예 |
널 비 널 입력 값을 비트와 모든 비를 계산합니다. |
예 |
널 비 널 입력 값을 비트 또는 모든 비 널 입력 값을 계산합니다. |
예 |
비트 전형적인 독점 또는 모든 비 널 입력 값을 계산합니다. 정렬되지 않은 값 세트에 대한 체크섬으로 유용 할 수 있습니다. |
예 |
모든 비 널 입력 값이 true 인 경우 true를 반환합니다. |
예 |
null이 아닌 입력 값이 true 인 경우 true를 반환합니다. 그렇지 않으면 |
예 |
입력 행 수를 계산합니다. |
예 |
입력 값이 null이 아닌 입력 행의 수를 계산합니다. |
예 |
이것은 SQL 표준의 것과 같습니다. |
예 |
NULL을 포함한 모든 입력 값을 JSON 어레이로 수집합니다. 값은에 따라 JSON으로 변환됩니다 |
아니오 |
널을 건너 뛰는 모든 입력 값을 JSON 어레이로 수집합니다. 값은에 따라 JSON으로 변환됩니다 |
아니오 |
같은 방식으로 동작
|
아니오 |
|
아니오 |
모든 키/값 쌍을 JSON 객체에 수집합니다. 주요 인수는 텍스트로 강요됩니다. 값 인수는에 따라 변환됩니다. |
아니오 |
모든 키/값 쌍을 JSON 객체에 수집합니다. 주요 인수는 텍스트로 강요됩니다. 값 인수는에 따라 변환됩니다. |
아니오 |
모든 키/값 쌍을 JSON 객체에 수집합니다. 주요 인수는 텍스트로 강요됩니다. 값 인수는에 따라 변환됩니다. |
아니오 |
모든 키/값 쌍을 JSON 객체에 수집합니다. 주요 인수는 텍스트로 강요됩니다. 값 인수는에 따라 변환됩니다. |
아니오 |
널 비 널 입력 값의 최대 값을 계산합니다. 모든 숫자, 문자열, 날짜/시간 또는 열거 유형 및에 사용할 수 있습니다. |
예 |
널 비 널 입력 값의 최소값을 계산합니다. 모든 숫자, 문자열, 날짜/시간 또는 열거 유형 및에 사용할 수 있습니다. |
예 |
널 비 널 입력 값의 결합을 계산합니다. |
아니오 |
널 비 널 입력 값의 교차점을 계산합니다. |
아니오 |
널이 아닌 입력 값을 문자열로 연결합니다. 첫 번째 이후의 각 값은 해당에 앞서 |
예 |
널 비 널 입력 값의 합을 계산합니다. |
예 |
NULL XML 입력 값을 연결합니다 (참조섹션 9.15.1.8). |
아니오 |
count
,이 함수는 행을 선택할 때 널 값을 반환합니다. 특히,Sum
노의 노선은 예상대로 0이 아닌 널을 반환하고array_agg
입력 행이 없을 때 빈 배열 대신 NULL을 반환합니다. 그만큼Coalesce
기능을 사용하여 필요할 때 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와이즈 토토_agg
및xmlagg
및 유사한 사용자 정의 와이즈 토토 함수는 입력 값의 순서에 따라 의미있는 다른 결과 값을 생성합니다. 이 순서는 기본적으로 지정되지 않지만 AN을 작성하여 제어 할 수 있습니다.주문 by
와이즈 토토 호출 내의 조항, 다음에 표시된대로섹션 4.2.7. 또는 정렬 된 서브 쿼리에서 입력 값을 공급하는 것이 일반적으로 작동합니다. 예를 들어:
XMLAGG (X)를 선택하여 (Y DESC로 테스트 주문에서 X를 선택) 탭;
외부 쿼리 레벨에 조인과 같은 추가 처리가 포함되어 있으면이 접근법이 실패 할 수 있다고 조심하십시오. 이로 인해 집계가 계산되기 전에 서브 쿼리의 출력이 다시 주문 될 수 있기 때문입니다..
부울 골재bool_and
및bool_or
표준 SQL 와이즈 토토에 해당Every
및any
또는일부
. PostgreSQL지원Every
하지만Any
또는일부
, 표준 구문에 내장 된 모호성이 있기 때문에 :
t1에서 b1 = any ((t2에서 b2를 선택하십시오 ...))를 선택하십시오 ...;
여기any
하위 쿼리가 부울 값으로 한 행을 반환하는 경우 서브 쿼리를 도입하거나 와이즈 토토 함수로 간주 될 수 있습니다. 따라서이 집계에는 표준 이름이 주어질 수 없습니다.
다른 SQL 데이터베이스 관리 시스템과 협력하는 데 익숙한 사용자는의 성능에 실망 할 수 있습니다count
전체 테이블에 적용될 때 와이즈 토토. 쿼리 :
약간의 count (*)에서 선택할 수 있습니다.
테이블 크기에 비례하는 노력이 필요합니다 :PostgreSQL표에 모든 행을 포함하는 전체 테이블 또는 인덱스 전체를 스캔해야합니다.
표 9.63통계 분석에 일반적으로 사용되는 와이즈 토토 함수를 보여줍니다. (이들은 더 많은 공동체가 사용하는 집계 목록을 어지럽히는 것을 피하기 위해 분리되어 있습니다.) 함수는 수락하는 것으로 표시됩니다numeric_type
모든 유형에 사용할 수 있습니다smallint
, 정수
, bigint
, 숫자
, Real
및이중 정밀도
. 설명에 언급 된 위치n
모든 경우에, 계산이 의미가 없다면 NULL이 반환됩니다. 예를 들어n
is ZERO.
표 9.63. 통계에 대한 와이즈 토토 함수
표 9.64를 사용하는 일부 와이즈 토토 함수를 보여줍니다.주문 세트 집계구문. 이러한 기능은 때때로라고도합니다.“역 분포”함수. 와이즈 토토 된 입력은에 의해 소개됩니다.주문 by
직접 인수그것은 집계되지 않았지만 한 번만 계산됩니다. 이러한 모든 기능은 집계 된 입력의 널 값을 무시합니다. 를 취하는 사람들을 위해fraction
매개 변수, 분수 값은 0과 1 사이 여야합니다. 그렇지 않으면 오류가 발생합니다. 그러나 널fraction
값은 단순히 널 결과를 생성합니다.
표 9.64. 주문 세트 와이즈 토토 함수
각각“가상 세트”와이즈 토토에 나열된표 9.65에 정의 된 동일한 이름의 창 함수와 관련이 있습니다Postgresql: Tài liệu: 18: 9.22. Chức nă토토 베이 cửa sổ. 각각의 경우, 집계 결과는 관련 창 함수가에 반환 한 값입니다.“가상”행으로 구성된 행args
, 그러한 행이 |Sorted_args
. 이러한 각 기능에 대해에 나와있는 직접 인수 목록args
에 주어진 와이즈 토토 인수의 수와 유형과 일치해야합니다.Sorted_args
. 대부분의 내장 골재와 달리, 이러한 와이즈 토토는 엄격하지 않으며, 널이 포함 된 입력 행을 삭제하지 않습니다. null 값은에 지정된 규칙에 따라 정렬됩니다.주문 by
조항
표 9.65. 가상 세트 와이즈 토토 함수
표 9.66. 그룹화 작업
그룹화 작업에 표시된 그룹화표 9.66그룹화 세트와 함께 사용됩니다 (참조섹션 7.2.4) 결과 행을 구별합니다. 에 대한 논쟁그룹화
함수는 실제로 평가되지 않지만에 제공된 표현을 정확하게 일치시켜야합니다.그룹 by
관련 쿼리 레벨의 조항. 예를 들어:
=
선택 *에서 items_sold;
만들기 | 모델 | 매상 -------+-------+------- foo | GT | 10 foo | 투어 | 20 바 | 도시 | 15 바 | 스포츠 | 5 (4 줄)=
rollup (make, model)에 의한 imps _sold 그룹에서 제조, 모델, 그룹화 (제조, 모델), 합 (판매)을 선택하십시오.
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모델
마지막 행에서 그룹화되었습니다 (따라서 모든 입력 행의 집계입니다).