a스포츠 토토 사이트 표현테이블을 계산합니다. 스포츠 토토 사이트 표현에는가 포함됩니다.From선택적으로 뒤 따르는 조항여기서, 그룹 by및조항. 사소한 스포츠 토토 사이트 표현식은 단순히 소위베이스 인 디스크의 스포츠 토토 사이트을 참조합니다. 표이지만 더 복잡한 표현을 사용하여 수정하거나 기본 스포츠 토토 사이트을 다양한 방식으로 결합하십시오.
선택 사항여기서, 그룹 by및스포츠 토토 사이트 표현식의 조항은 연속의 파이프 라인을 지정합니다. 에서 파생 된 스포츠 토토 사이트에서 수행 된 변환From절. 이 모든 변환은 a 전달되는 행을 제공하는 가상 스포츠 토토 사이트 쿼리의 출력 행을 계산하려면 목록을 선택하십시오.
the절주어진 하나 이상의 다른 스포츠 토토 사이트에서 스포츠 토토 사이트을 파생 쉼표로 구분 된 스포츠 토토 사이트 참조 목록에서.
Fromtable_reference[, table_reference[, ...]]
스포츠 토토 사이트 참조는 스포츠 토토 사이트 이름 일 수 있습니다 (아마도 Schema-Qualified) 또는 하위 쿼리, A와 같은 파생 스포츠 토토 사이트Join구성 또는 복잡한 이것들의 조합. 하나 이상의 스포츠 토토 사이트 참조가 있다면 에 나열From절, 표 크로스 조정 (즉, 행의 직교 제품) 형성된다; 아래를 참조하십시오). 의 결과From목록은 중간 가상 테이블입니다 그런 다음에 의해 변형 될 수 있습니다.여기서, 그룹 by및조항은 마침내입니다 전체 스포츠 토토 사이트 표현식의 결과.
스포츠 토토 사이트 참조가 A의 부모 인 스포츠 토토 사이트의 이름을 지정할 때 스포츠 토토 사이트 상속 계층 구조, 스포츠 토토 사이트 참조는 행을 생성합니다 그 스포츠 토토 사이트뿐만 아니라 모든 후손 스포츠 토토 사이트의 키워드전용테이블보다 우선합니다 이름. 그러나 참조는 그 열만 생성합니다 이름이 지정된 테이블에 나타납니다 - 서브 테이블에 추가 된 열은 다음과 같습니다. 무시.
쓰기 대신전용전 스포츠 토토 사이트 이름, 쓸 수 있습니다*이후 스포츠 토토 사이트 이름은 자손 스포츠 토토 사이트을 명시 적으로 지정합니다 포함. 글쓰기*는 필요하지 않습니다 그 행동은 기본값이기 때문에 설정 설정SQL_INHERITANCE구성 옵션). 그러나 쓰기*추가를 강조하는 데 유용 할 수 있습니다 스포츠 토토 사이트이 검색됩니다.
결합 된 스포츠 토토 사이트은 다른 두 가지에서 파생 된 스포츠 토토 사이트입니다 (Real 또는 파생) 특정 조인의 규칙에 따른 스포츠 토토 사이트 유형. 내부, 외부 및 크로스 조인을 사용할 수 있습니다. 그만큼 결합 된 스포츠 토토 사이트의 일반 구문은입니다.
T1 join_type T2[ join_condition ]
모든 유형의 결합은 함께 연결되거나 중첩 될 수 있습니다. 둘 중 하나 또는 둘 다T1andT2스포츠 토토 사이트에 결합 할 수 있습니다. 괄호는 주변에 사용할 수 있습니다Join조인 순서를 제어하기위한 조항. 없을 때 괄호,Join클로즈 둥지 왼쪽에서 오른쪽으로.
타입에 가입
T1크로스 조인T2
가능한 모든 행 조합에 대해T1andT2(즉, 직교 제품), 결합 된 스포츠 토토 사이트에는 모두로 구성된 행이 포함됩니다. 열T1모든 열에 의해T2. 스포츠 토토 사이트에 각각 n과 m 행이 있으면 가입 스포츠 토토 사이트에는 n * m 행이 있습니다.
FromT1크로스 조인T2FromT1내부 조인T2on true(아래 참조). 그것 또한에 해당합니다.FromT1, T2.
참고 :이 후자의 동등성은 그렇지 않습니다 두 개의 스포츠 토토 사이트 이상이 나타나면 정확하게 유지하십시오. 왜냐하면Join더 많은 바인딩 쉼표보다 단단히. 예를 들어FromT1크로스 조인T2내부 가입하다T3on조건IS 와 동일하지 않음FromT1, T2내부 조인T3on조건왜냐하면조건can 참조T1첫 번째 사례이지만 두 번째 사례는 아닙니다.
T1[내부] | 왼쪽 | 오른쪽 | 가득한 [외부] joinT2onboolean_expression T1[내부] | 왼쪽 | 오른쪽 | 가득한 [외부] joinT2사용 ( 사용열 목록에 가입)T1천연 [내부] | 왼쪽 | 오른쪽 | 가득한 [외부] joinT2
단어내부and외부는 모두 선택 사항입니다 양식.내부기본값입니다;왼쪽, 오른쪽및full외부 조인을 암시합니다.
the조건 조정is 에 지정됨on또는사용조항 또는 암시 적으로 단어천연. 가입 조건은 두 소스의 행을 결정합니다 테이블은로 간주됩니다."매치", 자세히 설명 된대로 아래에.
자격을 갖춘 조인의 가능한 유형은 다음과 같습니다.
T1의 각 행 R1에 대해 결합 된 테이블에는 조인을 만족시키는 T2의 각 행에 대한 행 R1이있는 상태
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T1의 각 행 T2에 행이있는 상태, 결합 된 행은 T2 열에 널 값이 추가됩니다. 따라서, 결합 된 테이블에는 항상 적어도 하나의 행이 있습니다. T1의 각 행.
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T2의 각 행 T1에 행이있는 상태, 결합 된 행은 T1의 열에 널 값이 추가됩니다. 이것은 왼쪽 결합의 반대 : 결과 테이블 T2의 각 행 당 항상 행이 있습니다.
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T1의 각 행 T2에 행이있는 상태, 결합 된 행은 T2 열에 널 값이 추가됩니다. 또한, 조인을 만족하지 않는 T2의 각 행에 대해 T1의 모든 행이있는 상태, 결합 된 행 T1 열의 널 값이 추가됩니다.
on절이 가장 중요합니다 일반적인 가입 조건 : 부울이 필요합니다 a와 같은 종류의 가치 표현여기서절. 한 쌍의 행 에서T1andT2일치on표현식은 true로 평가됩니다.
the사용절은 a 당신이 그것을 활용할 수있는 속기 조인의 양쪽이 사용하는 특정 상황 가입 열에 대해 동일한 이름입니다. 필요합니다 공유 열 이름의 쉼표로 구분 된 목록 평등을 포함하는 조인 조건을 형성합니다 각각에 대한 비교. 예를 들어, 가입T1andT2with사용 (A, B)조인 조건 생성onT1.a =T2.A 및T1.B =T2.B.
또한의 출력가입 사용중복 열을 억제하십시오 일치하는 두 열을 인쇄해야합니다. 동일한 값이 있어야합니다. 하는 동안조인 에모든 열을 생성T1의 모든 열이 뒤 따릅니다T2, 사용하나의 출력 열을 생성합니다 나열된 각 열 쌍에 대해 (나열된 Order), 나머지 열이 뒤 따릅니다T1나머지 열에서T2.
마지막으로,천연is 속기 형태의사용: IT 양식 a사용목록으로 구성됩니다 두 입력 스포츠 토토 사이트 모두에 나타나는 모든 열 이름 중 와 마찬가지로사용,이 열 출력 스포츠 토토 사이트에 한 번만 나타납니다. 없다면 공통 열 이름,천연 가입하다가입 ... on 진실, 교차 제품 조인 생성.
참고 : 사용IS 결합 된 열 변경으로부터 합리적으로 안전합니다 나열된 열만이므로 관계 결합.천연is 스키마가 변경되기 때문에 훨씬 더 위험합니다 새로운 일치 열을 일으키는 관계 참석할 이름은 가입이 결합됩니다. 그 새로운 칼럼도.
이것을 합치려면 스포츠 토토 사이트이 있다고 가정합니다T1:
Num | 이름 -----+------ 1 | 에이 2 | 비 3 | 기음
andT2:
Num | 값 -----+------- 1 | 트리플 엑스 3 | YYY 5 | 쿨쿨
그런 다음 다양한 결과에 대해 다음과 같은 결과를 얻습니다 조인 :
= 선택 *에서 T1 크로스 조인 T2;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 1 | A | 3 | YYY 1 | A | 5 | 쿨쿨 2 | B | 1 | 트리플 엑스 2 | B | 3 | YYY 2 | B | 5 | 쿨쿨 3 | C | 1 | 트리플 엑스 3 | C | 3 | YYY 3 | C | 5 | 쿨쿨 (9 줄)= 선택 *에서 t1에서 t1에서 t2로 결합 된 t1.num = t2.num;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 3 | C | 3 | YYY (2 줄)= 선택 *에서 T1 내부 조인 T2를 사용하여 (NUM);Num | 이름 | 값 -----+------+------- 1 | A | 트리플 엑스 3 | C | YYY (2 줄)= 선택 *에서 T1 Natural Inner Join T2;Num | 이름 | 값 -----+------+------- 1 | A | 트리플 엑스 3 | C | YYY (2 줄)= 선택 *에서 t1에서 t1에서 t2를 결합하여 t1.num = t2.num;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 2 | B | | 3 | C | 3 | YYY (3 줄)= select * from t1 왼쪽 왼쪽 왼쪽 t2를 사용하여 (num);Num | 이름 | 값 -----+------+------- 1 | A | 트리플 엑스 2 | B | 3 | C | YYY (3 줄)= 선택 *에서 t1에서 t1에 t2에 가입하십시오. t1.num = t2.num;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 3 | C | 3 | YYY | | 5 | 쿨쿨 (3 줄)= 선택 * T1 Full Full Join T2 ON T1.NUM = T2.NUM;Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 2 | B | | 3 | C | 3 | YYY | | 5 | 쿨쿨 (4 줄)
지정된 조정 조건on에는 그렇지 않은 조건도 포함 할 수도 있습니다 가입과 직접 관련됩니다. 이것은 일부에게 유용 할 수 있습니다 쿼리이지만 신중하게 생각해야합니다. 을 위한 예:
= 선택 *에서 t1에서 t1에서 t2를 결합하여 t1.num = t2.num 및 t2.value = 'xxx';Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 2 | B | | 3 | C | | (3 줄)
제한을 제한하는 것을 주목하십시오여기서조항은 다른 결과를 생성합니다.
= 선택 * 선택 *에서 t1에서 t2에 t2를 결합하여 t2.num there t2.value = 'xxx';Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 (1 행)
이것은에 제한이 있기 때문입니다.on조항이 처리전가입, a 에 제한이있는 제한여기서조항이 처리이후가입. 그렇지 않습니다 내부가 결합 된 문제이지만 외부에서는 중요합니다. 조인.
테이블과 복잡한 테이블에 임시 이름이 제공 될 수 있습니다. 도출 된 테이블에 대한 참조에 사용되는 참조 나머지 쿼리. 이것을 A라고합니다.스포츠 토토 사이트 별명.
스포츠 토토 사이트 별칭을 만들려면 쓰기
Fromtable_referenceasalias
또는
Fromtable_reference alias
theas키워드는 선택 사항입니다 소음.alias식별자.
일반적인 스포츠 토토 사이트 별칭의 적용은 단락을 할당하는 것입니다. 조인 조항을 유지하기 위해 긴 스포츠 토토 사이트 이름에 식별자 읽을 수 있습니다. 예를 들어:
select * from some_very_long_table_name s onther_fairly_long_name a on s.id = a.num; 가입
별칭은 테이블 참조의 새 이름이됩니다. 현재 쿼리에 관한 한 - 허용되지 않습니다. 다른 곳에서 원래 이름으로 테이블을 참조하십시오. 질문. 따라서 이것은 유효하지 않습니다 :
my_table.a 5로 my_table에서 my_table을 선택하십시오. -- 잘못된
스포츠 토토 사이트 별명은 주로 표기법 편의를위한 것이지만 테이블에 연결할 때 사용해야합니다. 예 :
선택 * 어머니로서 사람들로부터 어머니로서 사람과 함께 자녀로 사람과 함께 어머니. id = child.mother_id;
또한 표를 참조하면 별칭이 필요합니다 하위 쿼리입니다 (참조섹션 7.2.1.3).
괄호는 모호성을 해결하는 데 사용됩니다. 에서 다음 예를 들어 첫 번째 진술은 별칭을 할당합니다B두 번째 인스턴스my_table그러나 두 번째 진술 Alias를 조인 결과에 할당합니다.
선택 *에서 my_table에서 크로스로 결합하여 my_table b로 ... 선택 * (my_table as a cross join my_table) as b ...를 선택하십시오.
다른 형태의 스포츠 토토 사이트 별칭은 임시 이름을 제공합니다 스포츠 토토 사이트의 열과 스포츠 토토 사이트 자체 :
Fromtable_reference[as]alias(컬럼 1[, 컬럼 2[, ...]])
컬럼 별칭이 실제보다 지정된 경우 스포츠 토토 사이트에는 열이 있으며 나머지 열에 이름이 바뀌지 않습니다. 이 구문은 특히자가 요인에 유용합니다 하위 쿼리.
ALIA가 A의 출력에 적용되는 경우Join절, 별칭은 원본을 숨 깁니다 내 이름Join. 을 위한 예:
선택 a.* my_table에서 a as your_table as b on ...
유효한 SQL이지만 :
선택 a.*에서 (my_table as as your_table as b on ...) as c
유효하지 않습니다. 스포츠 토토 사이트 별명a별칭 외부에서 보이지 않습니다C.
파생 된 스포츠 토토 사이트을 지정하는 하위 쿼리는 포함되어야합니다 괄호 및필수스포츠 토토 사이트 별명을 할당해야합니다 이름. (보다섹션 7.2.1.2.) 예 :
from (select * from table1) as alias_name
이 예제는와 같습니다.Alias_name as table1. 더 흥미로운 경우 평범한 결합으로 축소 할 수 없습니다. 그룹화 또는 집계가 포함됩니다.
하위 쿼리도 A가 될 수 있습니다.값목록 :
from (vales ( 'anne', 'smith'), ( 'bob', 'Jones'), ( 'Joe', 'blow'))) 이름으로 (첫 번째, 마지막)
다시 스포츠 토토 사이트 별명이 필요합니다. 별칭 이름을 할당합니다 의 열값목록입니다 선택 사항이지만 좋은 관행입니다. 자세한 내용은 참조토토 핫 : 문서 : 9.2 : 값 목록.
테이블 함수는 행 세트를 생성하는 함수입니다. 기본 데이터 유형 (스칼라 유형) 또는 합성물로 구성 데이터 유형 (테이블 행). 그들은 테이블,보기, 또는 의 하위 퀴어Froma 질문. 스포츠 토토 사이트 함수에 의해 반환 된 열은에 포함될 수 있습니다.select, Join또는WHERE테이블, 뷰 또는 하위 쿼리와 같은 방식으로 조항 열.
테이블 함수가 기본 데이터 유형을 반환하는 경우 단일 결과 열 이름은 함수 이름과 일치합니다. 함수 인 경우 복합 유형을 반환하면 결과 열이 동일하게됩니다. 유형의 개별 속성으로 이름.
테이블 함수는에 별명을 사용할 수 있습니다.From조항이지만 남을 수도 있습니다 알리 아스. 함수가 사용되는 경우From별칭이없는 절, 함수 이름 결과 테이블 이름으로 사용됩니다.
일부 예 :
테이블 foo (FOOD INT, FOOSUBID int, fooname 텍스트) 만들기; function getfoo (int) foo는 foo를 $$로 반환합니다 FOO에서 * FOO FOOOD = $ 1; $$ 언어 SQL; getfoo (1)에서 *를 t1로 선택하십시오. FOO에서 *를 선택하십시오 foosubid의 ( foosubid를 선택하십시오 getfoo (foo.fooid) z에서 여기서 z.foooid = foo.foooid ); getfoo (1)에서 select *로보기 vw_getfoo를 만듭니다. * vw_getfoo;에서 * 선택
경우에 따라 테이블 함수를 정의하는 것이 유용합니다. 다른 열 세트를 반환 할 수 있습니다. 호출. 이를 지원하기 위해 테이블 기능을 선언 할 수 있습니다 유사 형을 되 돌리는 동안레코드. 이러한 함수가 쿼리에서 사용되면 예상 행 구조는 쿼리 자체에 지정되어야합니다. 시스템은 쿼리를 구문 분석하고 계획하는 방법을 알 수 있습니다. 고려하다 이 예 :
선택 * DBLINK에서 ( 'dbname = mydb', 'pg_proc에서 proname, prosrc') T1 (Proname Name, Prosrc 텍스트) Proname과 같은 'Bytea%';
thePostgreSQL : 문서 : 9.2 : 스포츠 토토 결과함수 (의 일부토토 결과 : 문서 : 9.2 : DBLINKmodule) 원격 쿼리를 실행합니다. 반품으로 선언 됨레코드사용될 수 있으므로 종류의 쿼리. 실제 열 세트는 예를 들어 파서가 알 수 있도록 쿼리를 호출하여*확장해야합니다.
의 구문어디서 절is
여기서search_condition
여기서search_conditionis 모든 값 표현식 (섹션 4.2) 값을 반환하는 유형부울.
처리 후From조항이 완료되며 파생 된 가상 테이블의 각 행은 검색 조건에 대해 확인했습니다. 결과의 결과 조건은 사실입니다. 행은 출력 테이블에 보관됩니다. 그렇지 않으면 (즉, 결과가 False 또는 NULL 인 경우) 폐기. 검색 조건은 일반적으로 최소한 참조됩니다 에서 생성 된 테이블의 열 한 열From절; 이것은 필요하지 않지만 그렇지 않으면 그만큼여기서절은 공정하게됩니다 쓸모 없는.
참고 :내부 조인의 조인 조건은 될 수 있습니다 에 작성여기서절 또는에서Join절. 을 위한 예를 들어이 스포츠 토토 사이트 표현식은 다음과 같습니다.
a, b, b a.id = b.id 및 b.val 5에서.및 :
a 내부 조인 B on (a.id = b.id)에서 b.val 5또는 아마도 :
자연 조인 B에서 B B.Val 5당신이 사용하는 이들 중 어느 것이 주로 스타일의 문제입니다. 그만큼Join구문의From절은 아마도 휴대용이 아닐 것입니다 다른 SQL 데이터베이스 관리 시스템이 있지만 SQL 표준. 외부 조인의 경우 선택의 여지가 없습니다 에서 수행해야합니다.From절. 그만큼on또는사용외부 조인 조항은not에이여기서조건 행을 추가하는 결과 (타의 추종없는 입력 행의 경우) 최종 결과에서 행을 제거 할뿐만 아니라
여기의 몇 가지 예가 있습니다.어디조항 :
선택 ... FDT에서 C1 5 선택 ... FDT에서 C1 in (1, 2, 3) 선택 ... FDT에서 C1 in (T2에서 C1 선택) 선택 ... FDT에서 C1 in (T2에서 C3를 선택하십시오. 여기서 C2 = Fdt.c1 + 10) 선택 ... FDT에서 C1 사이의 C1 (T2에서 C3를 선택하여 C2 = FDT.C1 + 10)과 100 선택 ... FDT에서 존재하는 곳 (T2에서 C1을 선택하여 C2 FDT.C1)
FDT에서 파생 된 스포츠 토토 사이트From절. 만나지 않는 행 의 검색 조건어디절 에서 제거됩니다FDT. 주목하십시오 스칼라 하위 쿼리를 값 표현식으로 사용합니다. 어떤 것과 마찬가지로 다른 쿼리, 하위 쿼리는 복잡한 테이블을 사용할 수 있습니다 표현. 또한 어떻게FDTIS 하위 쿼리에서 참조됩니다. 자격C1asfdt.c1전용입니다 필요한 경우C1a 서브 쿼리의 파생 입력 테이블의 열. 하지만 열 이름 자격은 그렇지 않은 경우에도 명확성을 추가합니다. 필요합니다. 이 예제는 열 이름 지정 범위가 외부 쿼리는 내부 쿼리로 확장됩니다.
통과 후여기서필터, the 파생 입력 테이블은를 사용하여 그룹화 될 수 있습니다.그룹 by조항 및 제거 를 사용하는 그룹 행조항
selectselect_list[어디서 ...] 그룹 byGrouping_Column_Reference[, Grouping_Column_Reference] ...
the그룹 by clause테이블에서 그 행을 함께 그룹화하는 데 사용됩니다. 나열된 모든 열에 동일한 값이 있습니다. 주문 열이 나열된 경우에는 중요하지 않습니다. 효과는 공통 값을 가진 각 행 세트를 한 그룹으로 결합하려면 그룹의 모든 행을 나타내는 행입니다. 이것은 끝났습니다 출력 및/또는 계산 골재의 중복성을 제거합니다 이 그룹에 적용됩니다. 예를 들어:
= 선택 *에서 test1;x | 와이 ---+--- A | 3 C | 2 B | 5 A | 1 (4 줄)= X; Test1 Group에서 X를 선택하십시오.x --- 에이 비 기음 (3 줄)
두 번째 쿼리에서 우리는 쓸 수 없었습니다선택 *에서 Test1 Group에서 x가 있기 때문입니다 열에 대한 단일 값 없음y각 그룹과 관련 될 수 있습니다. 그룹화 된 열은 할 수 있습니다 단일 값이 있으므로 선택 목록에서 참조됩니다. 각 그룹에서.
일반적으로 스포츠 토토 사이트이 그룹화되면 에 나열됨그룹 by할 수 없습니다 총 표현을 제외하고 참조. 예를 들어 골재 표현은 다음과 같습니다.
= x, x, sum (y)을 선택하여 x;x | 합집합 ---+----- A | 4 B | 5 C | 2 (3 줄)
여기Sum는 집계 함수입니다 이는 전체 그룹에 걸쳐 단일 값을 계산합니다. 더 사용 가능한 집계 기능에 대한 정보는 다음과 같습니다 에서 발견배트맨 토토 : 문서.
팁 :집계 표현이없는 그룹화 a.의 별개의 값 세트를 효과적으로 계산합니다 열. 이것은 또한를 사용하여 달성 할 수 있습니다.별개의절 (참조섹션 7.3.3).
여기에 또 다른 예가 있습니다. 총 판매량을 계산합니다. 각 제품 (모든 제품의 총 판매가 아닌) :
Product_id, P.Name, (sum (s.units) * P.Price)을 판매로 선택하십시오 제품 P에서 왼쪽 왼쪽에 가입 판매 (product_id) Product_id, P.Name, P.Price;의 그룹
이 예에서 열product_id, p.name및P.Price그룹 by절에서 참조되므로 절 쿼리 선택 목록 (그러나 아래 참조). 열S.units그룹 by목록에서만 사용되므로 골재 표현 (sum (...)) 제품의 판매를 나타냅니다. 각 제품에 대해 쿼리 제품의 모든 판매에 대한 요약 행을 반환합니다.
제품 스포츠 토토 사이트이 설정되어 있으면product_id는 기본 키입니다 그룹에 충분히product_id위의 예, 이름과 가격이이므로기능적으로 종속적제품 ID에서 그래서 어떤 이름과 가격 가치에 대한 모호성이 없습니다 각 제품 ID 그룹에 대한 반환.
엄격한 SQL,그룹 by할 수 있습니다 소스 스포츠 토토 사이트의 열별 그룹이지만PostgreSQL허용하도록 이것을 확장합니다그룹 by목록을 선택하십시오. 단순한 대신 가치 표현식으로 그룹화합니다 열 이름도 허용됩니다.
테이블을 사용하여 그룹화 된 경우그룹 에 의해, 그러나 특정 그룹 만 관심이 있습니다.조항을 사용할 수 있습니다.여기서clause, 그룹을 제거합니다 결과. 구문은 다음과 같습니다.
selectselect_listFrom ... [어디서 ...] 그룹에 의한 그룹 ...boolean_expression
표현절 그룹화 된 표현식과 그룹화되지 않은 것을 참조 할 수 있습니다 표현식 (반드시 집계가 포함됩니다 기능).
예 :
= SOLECT X, SUM (Y) SUM (y) 3;에 의해 Test1 Group의 Sum (Y)을 선택합니다.x | 합집합 ---+----- A | 4 B | 5 (2 줄)= x < 'c';에 의해 test1 그룹에서 x, sum (y)을 선택하십시오.x | 합집합 ---+----- A | 4 B | 5 (2 줄)
다시, 더 현실적인 예 :
Product_id, P.Name, (sum (s.units) * (p.price -p.cost)))) 제품 P에서 왼쪽 왼쪽에 가입 판매 (product_id) 여기서 s.date current_date- 간격 '4 주' product_id, p.name, p.price, p.cost의 그룹 합계 (p.price * s.units) 5000;
위의 예에서여기서절은 그룹화되지 않은 열에 따라 행을 선택합니다 ( 표현은 지난 4 주 동안 판매에만 해당됩니다), 동안조항은 다음을 제한합니다 총 총 매출이 5000 이상인 그룹에 대한 출력. 집계 표현이 반드시 쿼리의 모든 부분에서 동일합니다.
쿼리에 집계 함수 호출이 포함되어 있지만 아니요그룹 by조항, 그룹화 발생 : 결과는 단일 그룹 행입니다 (또는 아마도 행이 없습니다. 모두, 단일 행이에 의해 제거되면). A를 포함하는 경우에도 마찬가지입니다.조항이 없습니다 집계 기능 호출 또는그룹 by조항
쿼리에 창 함수가 포함 된 경우 (참조섹션 3.5, 섹션 9.21및섹션 4.2.8),이 기능은 그룹화 후 평가됩니다. 집계 및필터링은입니다 수행. 즉, 쿼리가 골재를 사용하는 경우그룹 by또는, 그런 다음 창에서 보는 행입니다 함수는 원래 테이블 행 대신 그룹 행입니다. 에서From/여기서.
여러 창 함수가 사용되면 모든 창이 사용됩니다 구문 적으로 동등한 기능파티션 by및주문 에 의해창 정의의 조항이 보장됩니다 데이터를 통해 단일 패스로 평가됩니다. 그러므로 그들은 이더라도 동일한 정렬 순서가 표시됩니다.주문 byan 주문. 그러나 평가에 대한 보장은 없습니다 다른 기능파티션 에 의해또는주문 by사양. (그러한 경우에는 정렬 단계가 일반적으로 윈도우 함수 평가의 패스와 정렬은 행의 순서를 보존하도록 보장주문 by동등한 것으로 본다.)
현재, 창 함수는 항상 분명한 데이터가 필요합니다. 쿼리 출력은 하나 또는 다른 창 함수 '파티션 에 의해/주문 by조항. 그렇지 않습니다 그러나 이것에 의존하는 것이 좋습니다. 명시적인 최상위 사용주문 by조항이 확인하고 싶다면 결과는 특정한 방식으로 정렬됩니다.