a스포츠 토토 결과 표현테이블을 계산합니다. 스포츠 토토 결과 표현에는가 포함됩니다.From선택적으로 뒤 따르는 조항여기서, 그룹 by및조항. 사소한 스포츠 토토 결과 표현식은 단순히 소위베이스 인 디스크의 스포츠 토토 결과을 참조합니다. 표이지만 더 복잡한 표현을 사용하여 수정하거나 기본 스포츠 토토 결과을 다양한 방식으로 결합하십시오.
선택 사항여기서, 그룹 by및스포츠 토토 결과 표현식의 조항은 연속의 파이프 라인을 지정합니다. 에서 파생 된 테이블에서 수행 된 변환From절. 이 모든 변환은 a 전달되는 행을 제공하는 가상 스포츠 토토 결과 쿼리의 출력 행을 계산하려면 목록을 선택하십시오.
the절주어진 하나 이상의 다른 스포츠 토토 결과에서 스포츠 토토 결과을 파생 쉼표로 구분 된 스포츠 토토 결과 참조 목록에서.
Fromtable_reference[, table_reference[, ...]]
스포츠 토토 결과 참조는 스포츠 토토 결과 이름 일 수 있습니다 (아마도 스키마 자격) 또는 하위 쿼리와 같은 파생 스포츠 토토 결과 스포츠 토토 결과 조인 또는 이들의 복잡한 조합. 둘 이상 스포츠 토토 결과 참조는에 나열되어 있습니다.From조항은 교차 조정 (아래 참조)을 형성합니다 그런 다음 중간 가상 테이블이 적용될 수 있습니다 의 변환여기서, 그룹 by및조항과 마지막으로 결과입니다 전체 스포츠 토토 결과 표현.
스포츠 토토 결과 참조가 A의 부모 인 스포츠 토토 결과의 이름을 지정할 때 스포츠 토토 결과 상속 계층 구조, 스포츠 토토 결과 참조는 행을 생성합니다 그 스포츠 토토 결과뿐만 아니라 모든 후손 스포츠 토토 결과의 키워드전용테이블보다 우선합니다 이름. 그러나 참조는 그 열만 생성합니다 이름이 지정된 테이블에 나타납니다 - 서브 테이블에 추가 된 열은 다음과 같습니다. 무시.
쓰기 대신전용전 스포츠 토토 결과 이름, 쓸 수 있습니다*이후 스포츠 토토 결과 이름은 자손 스포츠 토토 결과을 명시 적으로 지정합니다 포함. 글쓰기*필요하지 않습니다 그 행동은 기본값이기 때문에 설정 설정SQL_INHERITANCE구성 옵션). 그러나 쓰기*추가를 강조하는 데 유용 할 수 있습니다 스포츠 토토 결과이 검색됩니다.
결합 된 스포츠 토토 결과은 다른 두 가지에서 파생 된 스포츠 토토 결과입니다 (실제 또는 파생) 특정 조인의 규칙에 따른 스포츠 토토 결과 유형. 내부, 외부 및 크로스 조인을 사용할 수 있습니다.
타입 조인
T1크로스 조인T2
가능한 모든 행 조합에서T1andT2(즉, 직교 제품), 결합 된 스포츠 토토 결과에는 모두로 구성된 행이 포함됩니다. 열T1모든 열에 의해T2. 스포츠 토토 결과에 각각 n과 m 행이 있으면 가입 스포츠 토토 결과에는 n * m 행이 있습니다.
FromT1크로스 조인T2FromT1, T2. 또한에 해당합니다.FromT1내부 조인T2on true(아래 참조).
T1[내부] | 왼쪽 | 오른쪽 | 가득한 [외부] joinT2onboolean_expression T1[내부] | 왼쪽 | 오른쪽 | 가득한 [외부] 조인T2사용 ( 사용열 목록에 가입)T1천연 [내부] | 왼쪽 | 오른쪽 | 가득한 [외부] joinT2
단어내부and외부는 모두 선택 사항입니다 양식.내부기본값입니다;왼쪽, 오른쪽및full외부 조인을 암시합니다.
the조건 조정is 에 지정됨on또는사용조항 또는 암시 적으로 단어자연. 가입 조건은 두 소스의 행을 결정합니다 스포츠 토토 결과은로 간주됩니다."매치", 자세히 설명 된대로 아래에.
theon절이 가장 중요합니다 일반적인 가입 조건 : 부울이 필요합니다 a와 같은 종류의 가치 표현여기서절. 한 쌍의 행 에서T1andT2일치on표현식은 true로 평가됩니다 그들을.
사용는 속기입니다 표기법 : 쉼표로 구분 된 열 목록이 필요합니다 결합 된 스포츠 토토 결과이 공통적으로 가져야하는 이름, 각각의 동등성을 지정하는 결합 조건을 형성합니다 이 쌍의 열. 또한의 출력은사용하기하나에 열이 있습니다 각 동일 한 입력 열 쌍, 다음에 각 테이블의 나머지 열. 따라서,사용 (A, B, C)on (t1.a = t2.a 및 t1.b = t2.b 및 t1.c = t2.c)if 예외on사용됩니다. 두 개의 열이 있습니다a, B, 그리고C결과에서 와 함께사용만있을 것입니다 각각 중 하나 (그리고 if 먼저 나타납니다선택 *사용).
마지막으로,천연속기 형태의사용: a를 형성합니다.사용모든 열로 구성된 목록 두 입력 스포츠 토토 결과 모두에 나타나는 이름. 와 마찬가지로사용,이 열이 나타납니다 출력 스포츠 토토 결과에서 한 번만.
자격을 갖춘 조인의 가능한 유형은 다음과 같습니다.
T1의 각 행 R1에 대해 결합 된 테이블에는 조인을 만족시키는 T2의 각 행에 대한 행 R1이있는 상태
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T1의 각 행 T2에 행이있는 상태, 결합 된 행은 T2 열에 널 값이 추가됩니다. 따라서, 결합 된 테이블에는 항상 적어도 하나의 행이 있습니다. T1의 각 행.
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T2의 각 행 T1에 행이있는 상태, 결합 된 행은 T1의 열에 널 값이 추가됩니다. 이것은 왼쪽 결합의 반대 : 결과 테이블 T2의 각 행 당 항상 행이 있습니다.
먼저 내부 조인이 수행됩니다. 그런 다음 조인을 만족하지 않는 T1의 각 행 T2에 행이있는 상태, 결합 된 행은 T2 열에 널 값이 추가됩니다. 또한, 조인을 만족하지 않는 T2의 각 행에 대해 T1의 모든 행이있는 상태, 결합 된 행 T1 열의 널 값이 추가됩니다.
모든 유형의 결합은 함께 묶거나 중첩 될 수 있습니다. 둘 중 하나 또는 둘 다T1andT2테이블에 결합 할 수 있습니다. 괄호는 주변에 사용할 수 있습니다Join조인 순서를 제어하기위한 조항. 없을 때 괄호,Join클로즈 둥지 왼쪽에서 오른쪽으로.
이것을 합치려면 스포츠 토토 결과이 있다고 가정합니다T1:
Num | 이름 -----+------ 1 | 에이 2 | 비 3 | 기음
andT2:
Num | 값 -----+------- 1 | 트리플 엑스 3 | YYY 5 | 쿨쿨
그런 다음 다양한 결과를 얻습니다 조인 :
= 선택 *에서 T1 Cross 조인 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에서 t1에서 t2를 결합하여 t2 value = 'xxx';Num | 이름 | Num | 값 -----+------+-----+------- 1 | A | 1 | 트리플 엑스 (1 행)
이것은에 제한이 배치 되었기 때문입니다.on조항이 처리전가입, a 에 제한이있는 제한여기서조항이 처리이후가입.
테이블과 복잡한 테이블에 임시 이름이 제공 될 수 있습니다. 도출 된 테이블에 대한 참조에 사용되는 참조 나머지 쿼리. 이것을 A라고합니다.스포츠 토토 결과 별명.
스포츠 토토 결과 별칭을 만들려면 쓰기
Fromtable_referenceasalias
또는
Fromtable_reference alias
theas키워드는 선택 사항입니다 소음.alias식별자.
일반적인 스포츠 토토 결과 별칭의 적용은 단락을 할당하는 것입니다. 조인 조항을 유지하기 위해 긴 스포츠 토토 결과 이름에 식별자 읽을 수 있습니다. 예를 들어:
SELECT *에서 * some_very_long_table_name s onther_fairly_long_name a on s.id = a.num; 가입
별칭은 테이블 참조의 새 이름이됩니다. 현재 쿼리 - 더 이상 원래 이름으로 테이블. 따라서:
선택 * My_table에서 m my_table.a 5;에서 my_table에서 my_table에서 선택하십시오.
SQL 표준에 따라 유효하지 않습니다. 안에PostgreSQL이것은 an 오류,를 가정합니다.add_missing_from구성 변수는OFF(그대로 기본적으로). 경우on, an 암시 적 스포츠 토토 결과 참조는에 추가됩니다.From조항이므로 쿼리는 마치 처리됩니다 그것은 다음과 같이 작성되었습니다 :
선택 * My_table에서 my_table as where my_table.a 5;에서 my_table에서 my_table을 선택하십시오.
그로 인해 크로스 조인이 발생합니다. 당신이 원하는 것.
테이블 별칭은 주로 표기법 편의를위한 것이지만 테이블에 연결할 때 사용해야합니다. 예 :
선택 * 어머니로서 사람들로부터 어머니로서 사람과 함께 어머니.
또한 표를 참조하면 별칭이 필요합니다 하위 쿼리입니다 (참조섹션 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[, ...]])
더 적은 수의 열 별칭이 실제보다 지정된 경우 스포츠 토토 결과에는 열이 있으며 나머지 열에 이름이 바뀌지 않습니다. 이 구문은 특히자가 요인에 유용합니다 하위 쿼리.
alias가 A의 출력에 적용되는 경우Join절단, 별칭은 원본을 숨 깁니다 내 이름Join. 을 위한 예:
선택 a.* my_table에서 a join 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'))) 이름으로 (첫 번째, 마지막)
다시 스포츠 토토 결과 별명이 필요합니다. 별칭 이름을 할당합니다 의 열값목록입니다 선택 사항이지만 좋은 관행입니다. 자세한 내용은 참조배트맨 토토 : 문서 : 8.4 : 값 목록.
테이블 함수는 행 세트를 생성하는 함수입니다. 기본 데이터 유형 (스칼라 유형) 또는 합성물로 구성 데이터 유형 (테이블 행). 그들은 테이블,보기, 또는 의 하위 퀴어Froma 질문. 스포츠 토토 결과 함수에 의해 반환 된 열은에 포함될 수 있습니다.select, Join또는여기서테이블, 뷰 또는 하위 쿼리와 같은 방식으로 조항 열.
테이블 함수가 기본 데이터 유형을 반환하는 경우 단일 결과 열 이름은 함수 이름과 일치합니다. 함수 인 경우 복합 유형을 반환하면 결과 열이 동일하게됩니다. 유형의 개별 속성으로 이름.
스포츠 토토 결과 함수는에서 별명을 할 수 있습니다.From조항이지만 남을 수도 있습니다 알리 아스. 함수가 사용되는 경우From별명이없는 절, 함수 이름 결과 테이블 이름으로 사용됩니다.
일부 예 :
테이블 foo 생성 (FOODER 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%';
thedblink함수 실행 a 원격 쿼리 (참조Contrib/DBlink). 반품으로 선언 됨레코드그 이후 모든 종류의 쿼리에 사용될 수 있습니다. 실제 열 세트 구문자가되도록 호출 쿼리에 지정해야합니다. 예를 들어, 무엇을 알고 있습니다*확장.
어디서 절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) where b.val 5에서 b on (a.id = b.id)또는 아마도 :
자연 조인 B에서 B B.Val 5당신이 사용하는 이들 중 어느 것이 주로 스타일의 문제입니다. 그만큼Join구문의From조항은 아마도 휴대용이 아닐 것입니다 다른 SQL 데이터베이스 관리 시스템이 있지만 SQL 표준. 외부 조인의 경우 선택의 여지가 없습니다 에서 수행해야합니다.절. 그만큼on또는사용외부 조인 조항은아님에이여기서조건 행을 추가하는 결과 (타의 추종없는 입력 행의 경우) 최종 결과에서 행을 제거 할뿐만 아니라
다음은의 몇 가지 예입니다.여기서조항 :
선택 ... 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)
FDTFrom절. 만나지 않는 행 의 검색 조건어디절 에서 제거됩니다FDT. 주목하십시오 스칼라 하위 쿼리를 값 표현식으로 사용합니다. 어떤 것과 마찬가지로 다른 쿼리, 하위 쿼리는 복잡한 테이블을 사용할 수 있습니다 표현. 또한 어떻게FDTIS 하위 쿼리에서 참조됩니다. 자격C1asfdt.c1전용입니다 필요한 경우C1| 서브 쿼리의 파생 입력 테이블의 열. 하지만 열 이름 자격은 그렇지 않은 경우에도 명확성을 추가합니다. 필요합니다. 이 예제는 열 이름 지정 범위가 외부 쿼리는 내부 쿼리로 확장됩니다.
통과 후어디필터, 파생 입력 테이블은를 사용하여 그룹화 될 수 있습니다.그룹 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 by x가 있기 때문입니다 열에 대한 단일 값 없음y각 그룹과 관련 될 수 있습니다. 그룹화 된 열은 할 수 있습니다 단일 값이 있으므로 선택 목록에서 참조됩니다. 각 그룹에서.
일반적으로 스포츠 토토 결과이 그룹화되면 열이 아닙니다. 에 나열됨그룹 by할 수 없습니다 총 표현을 제외하고 참조. 예를 들어 골재 표현은 다음과 같습니다.
= X, SOM SOM SOM (y) x by x;x | 합집합 ---+----- A | 4 B | 5 C | 2 (3 줄)
여기Sum는 집계 함수입니다 이는 전체 그룹에 걸쳐 단일 값을 계산합니다. 더 사용 가능한 집계 기능에 대한 정보는 다음과 같습니다 에서 발견PostgreSQL :.
팁 :집계 표현이없는 그룹화 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조항에서 참조되므로 쿼리 선택 목록. (제품 테이블 설정 방법에 따라 다릅니다 UP, 이름과 가격은 제품 ID에 완전히 의존 할 수 있으며 따라서 추가 그룹은 이론적으로 불필요 할 수 있습니다. 이것은 구현되지 않았지만.) 열S.units그룹 by목록에서만 사용되므로 골재 표현 (sum (...)) 제품의 판매를 나타냅니다. 각 제품에 대해 쿼리 제품의 모든 판매에 대한 요약 행을 반환합니다.
엄격한 SQL에서그룹 by만 가능합니다 소스 스포츠 토토 결과의 열별 그룹이지만PostgreSQL허용하도록 이것을 확장합니다그룹 by목록을 선택하십시오. 단순한 대신 가치 표현식으로 그룹화합니다 열 이름도 허용됩니다.
테이블을 사용하여 그룹화 된 경우그룹 에 의해, 그러나 특정 그룹 만 관심이 있습니다.조항을 사용할 수 있습니다.여기서clause, 그룹을 제거합니다 결과. 구문은 다음과 같습니다.
selectselect_listFrom ... [어디서 ...] 그룹에 의해 ... hadeboolean_expression
표현절 그룹화 된 표현식과 그룹화되지 않은 것을 참조 할 수 있습니다 표현식 (반드시 집계가 포함됩니다 기능).
예 :
= SOLECT SOM (y) 3;를 갖는 x에 의해 test1 그룹에서 X, 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및섹션 4.2.8),이 기능은 그룹화 후 평가됩니다. 집계 및필터링은입니다 수행. 즉, 쿼리가 골재를 사용하는 경우그룹 by, 또는, 그런 다음 창에서 보는 행입니다 함수는 원래 테이블 행 대신 그룹 행입니다. 에서From/여기서.
여러 창 함수가 사용되면 모든 창이 사용됩니다 구문 적으로 동등한 기능파티션 by및주문 에 의해창 정의의 조항이 보장됩니다 데이터를 통해 단일 패스로 평가됩니다. 그러므로 그들은 이더라도 동일한 정렬 순서가 표시됩니다.주문 byan 주문. 그러나 평가에 대한 보장은 없습니다 다른 기능파티션 에 의해또는주문 by사양. (그러한 경우에는 정렬 단계가 일반적으로 윈도우 함수 평가의 패스와 정렬은 행의 순서를 보존하도록 보장주문 by동등한 것으로 본다.)
현재, 창 함수는 항상 선명한 데이터가 필요합니다. 쿼리 출력은 하나 또는 다른 창 함수 '파티션 에 의해/주문 by조항. 그렇지 않습니다 그러나 이것에 의존하는 것이 좋습니다. 명백한 것을 사용하십시오 최상위주문 by원하는 경우 조항 결과가 특정 방식으로 정렬되어 있는지 확인하십시오.