이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다와이즈 토토 4_AAA버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

7.2. 토토 사이트 추천 표현

a토토 사이트 추천 표현테이블을 계산합니다. 토토 사이트 추천 표현에는가 포함됩니다.From선택적으로 뒤 따르는 조항여기서, 그룹 by클로즈. 사소한 토토 사이트 추천 표현 소위베이스 테이블 인 디스크의 테이블을 참조하지만 복잡한 표현식을 사용하여 기본 테이블을 수정하거나 결합 할 수 있습니다. 다양한 방법.

선택 사항여기서, 그룹 by토토 사이트 추천 표현식의 조항은 연속의 파이프 라인을 지정합니다. 에서 파생 된 테이블에서 수행 된 변환From절. 이 모든 변환은 a 선택에 전달되는 행을 제공하는 가상 토토 사이트 추천 쿼리의 출력 행을 계산하려면 목록.

7.2.1. 그만큼From

the쉼표로 구분 된 토토 사이트 추천 참조 목록.

Fromtable_reference[, table_reference[, ...]]

토토 사이트 추천 참조는 토토 사이트 추천 이름 일 수 있습니다 (아마도 Schema-Qualified) 또는 하위 쿼리, A와 같은 파생 토토 사이트 추천Join구성 또는 복잡한 조합 이것들. 두 개 이상의 토토 사이트 추천 참조가에 나열되어있는 경우From조항, 토토 사이트 추천은 교차 조정됩니다 (즉, 그들의 행의 직교 제품이 형성됩니다. 아래를 참조하십시오). 그만큼 의 결과From목록은 중간입니다 그런 다음 가상 토토 사이트 추천에 의해 변환 될 수있는 가상 토토 사이트 추천여기서, 그룹 by, 그리고조항은 마침내입니다 전체 토토 사이트 추천 표현식의 결과.

토토 사이트 추천 참조가 A의 부모 인 토토 사이트 추천의 이름을 지정할 때 토토 사이트 추천 상속 계층 구조, 토토 사이트 추천 참조는 행을 생성합니다 그 토토 사이트 추천뿐만 아니라 모든 후손 토토 사이트 추천, 키워드전용토토 사이트 추천 이름보다 우선합니다. 그러나 참조는 명명 된 토토 사이트 추천 - 하위 토토 사이트 추천에 추가 된 열은 무시됩니다.

쓰기 대신전용전 토토 사이트 추천 이름, 쓸 수 있습니다*이후 토토 사이트 추천 이름은 자손 토토 사이트 추천을 명시 적으로 지정합니다 포함. 글쓰기*이후로 필요하지 않습니다 해당 동작은 기본값입니다 (설정을 변경하지 않는 한 의SQL_INHERITANCE구성 옵션). 그러나 쓰기*추가 토토 사이트 추천이 검색.

7.2.1.1. 결합 된 테이블

결합 된 토토 사이트 추천은 다른 두 가지에서 파생 된 토토 사이트 추천입니다 (Real 또는 파생) 토토 사이트 추천 특정 조인 유형의 규칙에 따라. 내부, 외부 및 크로스 조인을 사용할 수 있습니다. 일반적인 구문 결합 된 토토 사이트 추천은

T1 join_type T2[ join_condition ]

모든 유형의 결합은 함께 연결되거나 중첩 될 수 있습니다. 둘 다T1andT2토토 사이트 추천에 결합 할 수 있습니다. 괄호 안에있을 수 있습니다 주위에 중고Join조항을 제어합니다 주문에 가입하십시오. 괄호가없는 경우Join클로즈는 왼쪽에서 오른쪽으로 둥지입니다.

타입 조인

크로스 조인
T1크로스 조인T2

가능한 모든 행 조합에서T1andT2(즉, 직교 제품), 결합 된 토토 사이트 추천에는 행이 포함됩니다. 모든 열로 구성T1T2. 만약에 토토 사이트 추천에는 각각 n과 m 행이 있고 결합 된 토토 사이트 추천은 n * m 줄이 있습니다.

FromT1크로스 조인T2FromT1내부 가입하다T2on true(아래 참조). 또한에 해당합니다.FromT1, T2.

참고 :이 후자의 동등성은 언제 정확히 유지되지 않습니다 두 개 이상의 토토 사이트 추천이 나타납니다.Join쉼표보다 더 단단히 바인딩합니다. 예를 들어FromT1크로스 조인T2내부 조인T3on조건|FromT1, T2내부 조인T3on조건왜냐하면조건CAN 참조T1첫 번째 경우에는 두 번째 경우가 아닙니다.

자격을 갖춘 조인
T1[내부] | 왼쪽 | 오른쪽 | 가득한  [외부] joinT2onboolean_expression
T1[내부] | 왼쪽 | 오른쪽 | 가득한  [외부] joinT2사용 (열 목록에 가입)T1천연 [내부] | 왼쪽 | 오른쪽 | 가득한  [외부] joinT2

단어내부and외부옵션은 모든 형태로 선택 사항입니다.내부기본값입니다;왼쪽, 오른쪽full외부 조인을 암시합니다.

the조건 조건에 지정됨on또는사용절 또는 단어에 의해 암시 적으로천연. 결합 조건은 두 소스 테이블의 행을 결정합니다. 고려"매치", 설명대로 아래에서 자세히.

자격을 갖춘 조인의 가능한 유형은 다음과 같습니다.

내부 조인

T1의 각 행 R1에 대해 결합 된 테이블에는 각 행에 행이 있습니다. T2에서 R1과의 결합 조건을 만족합니다.

왼쪽 외부 조인

먼저 내부 조인이 수행됩니다. 그런 다음 T1의 각 행에 대해 T2의 행으로 조인 조건을 만족시키지 않으며, 조인 T2의 열에서 줄에 널 값이 추가됩니다. 따라서 가입 테이블은 항상 t1의 각 행 당 최소 한 줄을 가지고 있습니다.

오른쪽 외부 조인

먼저 내부 조인이 수행됩니다. 그런 다음 T2의 각 행에 대해 T1의 어떤 행으로 조인 조건을 만족시키지 않으며, 조인 줄은 T1의 열에서 널 값으로 추가됩니다. 이것은입니다 왼쪽 조인의 대화 : 결과 테이블에는 항상 행이 있습니다. T2의 각 행에 대해

전체 외부 조인

먼저, 내부 조인이 수행됩니다. 그런 다음 T1의 각 행에 대해 T2의 행으로 조인 조건을 만족시키지 않으며, 조인 T2의 열에서 줄에 널 값이 추가됩니다. 또한 각 행에 대해 T1의 어떤 행으로 조인 조건을 충족시키지 않는 T2의 T1 열에 널 값이있는 결합 된 행이 추가됩니다.

theon절은 가장 일반적인 종류입니다 조건 조건 : 동일하게 부울 가치 표현이 필요합니다. A에 사용되는 친절여기서절. 한 쌍 의 행T1andT2일치on표현식 평가가 참으로 평가됩니다.

the사용절은 속기입니다 둘 다 조인 측면은 결합 열에 동일한 이름을 사용합니다. 그것 공유 열 이름의 쉼표로 구분 된 목록과 양식 각각의 평등 비교를 포함하는 조건에 가입하십시오. 예를 들어, 가입T1andT2with사용 (A, B)조인 조건 생성onT1.a =T2.A 및T1.B =T2.B.

더 나아가의 출력사용중복 열 억제 : 두 가지를 모두 인쇄 할 필요가 없습니다. 일치하는 열은 동일한 값을 가져야하므로. 하는 동안가입모든 열을 생성T1|T2, 가입 사용나열된 각 열에 대해 하나의 출력 열을 생성합니다. 쌍 (나열된 순서), 나머지 열이 뒤 따릅니다.T1, 나머지 열T2.

마지막으로,천연사용: a를 형성합니다.사용모든 열 이름으로 구성된 목록 두 입력 토토 사이트 추천 모두에 나타납니다. 와 마찬가지로사용,이 열은 출력에서 ​​한 번만 나타납니다 토토 사이트 추천. 공통 열 이름이없는 경우자연 조인가입 ... 진실, 교차 제품 조인 생성.

참고 : 사용는 합리적으로 안전합니다 목록 만 있으므로 결합 된 관계의 열 변경에서 열이 결합되어 있습니다.천연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에서 t1에서 t2를 결합하여 t2.num = t2.num 여기서 t2. value = 'xxx';Num | 이름 | Num | 값
-----+------+-----+-------
   1 | A |   1 | 트리플 엑스
(1 행)

이것은에 제한이 배치 되었기 때문입니다.on조항이 처리제한 중에 조인 에 배치어디조항이 처리이후가입. 그렇게합니다 내부 조인은 중요하지 않지만 외부에서는 중요합니다. 조인.

7.2.1.2. 테이블 및 열 별명

토토 사이트 추천 및 복잡한 토토 사이트 추천에 임시 이름이 제공 될 수 있습니다. 참조는 나머지 쿼리. 이것을 A라고합니다.토토 사이트 추천 별명.

토토 사이트 추천 별칭을 만들려면 쓰기

Fromtable_referenceasalias

또는

Fromtable_reference alias

theas키워드는 선택적 노이즈입니다.별명식별자가 될 수 있습니다.

일반적인 토토 사이트 추천 별칭의 적용은 단락을 할당하는 것입니다. 결합 조항을 읽을 수 있도록 긴 토토 사이트 추천 이름을 식별합니다. 예를 들어:

SELECT *에서 some_very_long_table_name s onther_fairly_long_name a on s.id = a.num; 가입

별칭은 토토 사이트 추천 참조의 새 이름이됩니다. 현재 쿼리와 관련이 있습니다. 쿼리의 다른 곳에서 원래 이름으로 토토 사이트 추천. 따라서 이것은입니다 유효하지 않음 :

my_table에서 my_table에서 my_table에서 * 선택 *을 선택하십시오.    -- 잘못된

테이블 별명은 주로 표기 적 편의를위한 것이지만 테이블에 결합 할 때 사용해야합니다 (예 :

선택 * 어머니로서 사람들로부터 어머니로서 사람과 함께 자녀로 사람을 만나기 마적. id = child.mother_id;

또한 토토 사이트 추천 참조가 하위 쿼리 (참조섹션 7.2.1.3).

괄호는 모호성을 해결하는 데 사용됩니다. 다음에서 예를 들어 첫 번째 진술은 별칭을 할당합니다B두 번째 인스턴스my_table이지만 두 번째 문은 별칭을 할당합니다 가입 결과 :

선택 *에서 my_table에서 크로스 가입 my_table b로 my_table을 선택하십시오.
선택 * (my_table as a cross join my_table) as b ...를 선택하십시오.

다른 형태의 토토 사이트 추천 앨리어싱은 임시 이름을 토토 사이트 추천의 열 및 토토 사이트 추천 자체 :

Fromtable_reference[as]alias(컬럼 1[, 컬럼 2[, ...]])

실제 테이블이 가진 것보다 더 적은 열 별명이 지정된 경우 열, 나머지 열의 이름이 바뀌지 않았습니다. 이 구문입니다 자가 주인 또는 하위 쿼리에 특히 유용합니다.

ALIA가 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.3. 서브 쿼리

파생 된 토토 사이트 추천을 지정하는 서브 쿼리는 포함되어야합니다 괄호 및필수be 테이블 별명 이름을 할당했습니다 (in섹션 7.2.1.2). 예를 들어:

from (select * from table1) as alias_name

이 예제는와 같습니다.table1에서 as alias_name. 더 흥미로운 사례, 감소 할 수 없습니다 평범한 결합, 하위 쿼리가 그룹화 또는 집합.

하위 쿼리도 A 일 수 있습니다.목록 :

from (vales ( 'anne', 'smith'), ( 'bob', 'Jones'), ( 'Joe', 'blow')))
     이름으로 (첫 번째, 마지막)

다시 테이블 별명이 필요합니다. 별명 이름을 지정합니다 의 열목록은 선택 사항입니다. 그러나 좋은 관행입니다. 자세한 내용은 참조섹션 7.7.

7.2.1.4. 테이블 기능

테이블 함수는 행 세트를 생성하는 함수입니다. 기본 데이터 유형 (스칼라 유형) 또는 복합 데이터 유형의 업 (테이블 행). 그들은 테이블, 뷰 또는 하위 쿼리처럼 사용됩니다.From쿼리 조항. 열이 반환되었습니다 토토 사이트 추천 함수 별에 포함될 수 있습니다.select, Join또는여기서테이블과 같은 방식으로 조항,보기, 또는 하위 쿼리 열.

테이블 함수가 기본 데이터 유형을 반환하는 경우 단일 결과 열 이름은 함수 이름과 일치합니다. 함수가 반환되는 경우 a 복합 유형, 결과 열은 유형의 개별 속성.

토토 사이트 추천 함수는에서 앨리어싱 할 수 있습니다.From조항이지만 알리아를 입지 않을 수도 있습니다. 경우 a 함수는에 사용됩니다.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.3 : 와이즈 토토함수 (의 일부postgresql : 문서 : 9.3 : 토토 사이트 추천모듈) 실행 a 원격 쿼리. 반품으로 선언 됨레코드모든 종류의 쿼리에 사용될 수 있으므로. 실제 열 세트 구문 분석기가 알 수 있도록 호출 쿼리에 지정해야합니다. 예를 들어,*확장해야합니다.

7.2.1.5. 측면서브 쿼리

서브 쿼리에 나타나From할 수 있습니다 핵심 단어 앞에측면. 이것 이전에 제공된 열을 참조 할 수 있습니다From항목. (없이측면, 각 하위 쿼리는 독립적으로 평가됩니다 그래서 다른 것을 교차 참조 할 수 없습니다From항목.)

토토 사이트 추천 함수가 나타납니다Fromcan 또한 핵심 단어가 앞서측면, 그러나 함수의 경우 핵심 단어는 선택 사항입니다. 기능 인수는 선행에 의해 제공된 열에 대한 참조를 포함 할 수 있습니다From어떤 경우에도 항목.

a측면항목은 최상위로 나타날 수 있습니다 에서From목록 또는 A 내Join트리. 후자의 경우에도 참조 할 수 있습니다 A 왼쪽에있는 모든 항목Join오른쪽에 있습니다.

언제From항목 포함측면교차 참조, 평가가 진행됩니다 다음 : 다음 :의 각 행에 대해From항목 교차 참조 열 또는 행 세트를 제공합니다 다수의From열을 제공하는 항목, 그만큼측면항목은이를 사용하여 평가됩니다 열 또는 행 세트의 열 값. 결과 행은입니다 그들이 계산 한 행과 평소와 같이 합류했습니다. 이것은 열 소스에서 각 행 또는 행 세트에 대해 반복 테이블 (들).

사소한 예측면is

선택 *에서 foo, geral (bar.id = foo.bar_id) ss;를 선택하십시오.

정확히 동일하기 때문에 특히 유용하지 않습니다. 더 전통적인 결과

선택 *에서 foo, bar where bar.id = foo.bar_id; bar bar

측면는 주로 유용합니다 행을 계산하는 데 크로스 참조 열이 필요합니다. 가입. 일반적인 응용 프로그램은 설정 퇴행 기능. 예를 들어, 그렇게 가정정점 (다각형)정점 세트를 반환합니다 다각형, 우리는 다각형의 근접한 정점을 식별 할 수 있습니다 다음과 함께 토토 사이트 추천에 저장

P1.ID, P2.ID, V1, V2를 선택하십시오
다각형 P1, Polygons P2,
     측면 정점 (P1.Poly) v1,
     측면 정점 (p2.poly) v2
여기서 (v1 <- v2) <10 및 p1.id! = p2.id;

이 쿼리도 작성할 수 있습니다

P1.ID, P2.ID, V1, V2를 선택하십시오
다각형 P1 크로스 조인 측면 정점 (P1.Poly) V1,
     다각형 P2 크로스 조인 측면 정점 (P2.poly) v2
여기서 (v1 <- v2) <10 및 p1.id! = p2.id;

또는 다른 여러 동등한 제제. (이미 언급,측면키워드입니다 이 예에서는 불필요하지만 명확성을 위해 사용합니다.)

종종 특히 편리합니다왼쪽 가입하다to a측면하위 쿼리 이더라도 결과에 소스 행이 나타납니다.측면서브 쿼리는 그들에게 행을 생성하지 않습니다. 을 위한 예, ifget_product_names ()제조업체가 만든 제품 이름을 반환하지만 일부는 우리 토토 사이트 추천의 제조업체는 현재 제품을 생산하지 않습니다. 그것이 어떤 것인지 알아보십시오 :

M.Name을 선택하십시오
제조업체로부터 m 왼쪽에 가입하면 gettal get_product_names (m.id) pname on true
pname이 null 인 곳;

7.2.2. 그만큼여기서

의 구문어디서 절is

여기서search_condition

여기서search_condition가치 표현 (참조PostgreSQL : 문서 : 9.3 : 값 메이저 토토 사이트식) 유형 값을 반환하는부울.

처리 후From절 완료되면 파생 된 가상 테이블의 각 행이 확인됩니다. 검색 조건. 조건의 결과가 참이면 행은 출력 테이블에 보관됩니다. 그렇지 않으면 결과가 false 또는 null) 폐기됩니다. 검색 조건은 일반적으로 참고 문헌에서 생성 된 테이블의 최소 한 열 이상절; 이것은 필요하지는 않지만 그렇지 않으면여기서절은 공정하게됩니다 쓸모 없는.

참고 :내부 조인의 조인 조건을 작성할 수 있습니다. 어느 쪽이든여기서조항 또는Join절. 예를 들어,이 토토 사이트 추천 표현은 동일합니다 :

a, b에서 b, 여기서 a.id = b.id 및 b.val 5

및 :

A에서 B On (a.id = b.id)에서 b b.val 5에서 b on (a.id = b.id)

또는 아마도 :

자연 조인 B에서 B B.Val 5

당신이 사용하는 이들 중 어느 것이 주로 스타일의 문제입니다. 그만큼Join구문의From절은 아마도 다른 SQL과 휴대 할 수 없을 것입니다 데이터베이스 관리 시스템은 SQL 표준에도 불구하고. 외부 조인의 경우 선택의 여지가 없습니다.에서 수행해야합니다.From절. 그만큼on또는사용조항 외부 조인은notA와 동등한여기서조건 다음과 같이 행을 추가합니다 (타의 추종없는 입력 행) 최종 결과에서 행을 제거 할뿐입니다.

다음은의 몇 가지 예입니다.여기서조항 :

선택 ... 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. 사용을 주목하십시오 값 표현식으로 스칼라 하위 쿼리. 다른 쿼리와 마찬가지로 하위 쿼리는 복잡한 토토 사이트 추천 표현식을 사용할 수 있습니다. 또한 주목하십시오 어떻게FDT는 하위 쿼리에 참조됩니다. 자격C1asfdt.c1C1도 파생 된 입력의 열 이름입니다. 하위 퀘스트의 테이블. 그러나 열 이름 자격은 명확성을 더합니다 필요하지 않은 경우에도. 이 예제는 열의 방법을 보여줍니다 외부 쿼리의 이름 범위가 내부 쿼리로 확장됩니다.

7.2.3. 그만큼그룹 byandClauses

통과 후여기서필터, 파생 입력 테이블은를 사용하여 그룹화 될 수 있습니다.그룹 by조항 및 그룹 제거 사용 행조항

selectselect_list[어디서 ...]
    그룹 byGrouping_Column_Reference[, Grouping_Column_Reference] ...

the그룹 by 절나열된 모든 열에 동일한 값이 있습니다. 순서 열이 나열되어 있으면 중요하지 않습니다. 효과는 결합하는 것입니다 하나의 그룹 행에 공통 값을 갖는 각 행 세트 그룹의 모든 행을 나타냅니다. 이것은 제거하기 위해 수행됩니다 적용되는 출력 및/또는 계산 골재의 중복성 이 그룹. 예를 들어:

= 선택 * From Test1;x | 와이
---+---
 A | 3
 C | 2
 B | 5
 A | 1
(4 줄)= x에 의해 Test1 Group에서 X를 선택하십시오.x
---
 에이
 비
 기음
(3 줄)

두 번째 쿼리에서는 글을 쓸 수 없었습니다선택 *에서 Test1 Group에서 x, 아니요 열의 단일 값y각 그룹과 관련이 있습니다. 그룹화 된 열은 될 수 있습니다 단일 값이 있으므로 선택 목록에서 참조 각 그룹.

일반적으로 토토 사이트 추천이 그룹화되면 나열되지 않은 열 안에그룹 by를 제외하고 참조 할 수 없습니다 골재 표현. 골재 표현이있는 예 이다:

= test1 Group에서 X, Sum (y)을 선택하여 x;x | 합집합
---+-----
 A |   4
 B |   5
 C |   2
(3 줄)

여기Sum는 집계 기능입니다 전체 그룹에 걸쳐 단일 값을 계산합니다. 더 많은 정보 사용 가능한 집계 기능에 대해에서 찾을 수 있습니다.섹션 9.20.

팁 :효과적으로 집계 표현이없는 그룹화 열의 별개의 값 세트를 계산합니다. 이것은 또한 될 수 있습니다 를 사용하여 달성별도의절 (참조섹션 7.3.3).

여기에 또 다른 예가 있습니다. 각각의 총 판매량을 계산합니다. 제품 (모든 제품의 총 판매 대신) :

Product_id, P.Name, (sum (s.units) * P.Price)을 판매로 선택하십시오
    제품 P에서 왼쪽 왼쪽에 가입 판매 (product_id)
    Product_id, P.Name, P.Price;의 그룹

이 예에서 열product_id, p.nameP.Price그룹 by절에서 참조되므로 절 쿼리 선택 목록 (그러나 아래 참조). 열S.units그룹 by집계에서만 사용되므로 목록 표현 (sum (...)) 제품의 판매. 각 제품에 대해 쿼리는 a 제품의 모든 판매에 대한 요약 행.

제품 토토 사이트 추천이 설정되어 있으면product_id가 기본 키입니다 그룹에 충분히product_id위의 예, 이름과 가격이이므로기능적으로 의존적제품 ID에서 어떤 이름과 가격 가치에 대한 모호성이 없습니다. 각 제품 ID 그룹에 대한 반환.

엄격한 SQL에서그룹 by그룹 만 할 수 있습니다 소스 토토 사이트 추천의 열에 의해PostgreSQL허용하도록 이것을 확장합니다그룹 bySELECT에서 열별로 그룹화합니다 목록. 간단한 열 이름 대신 값 표현식으로 그룹화합니다 또한 허용됩니다.

테이블을 사용하여 그룹화 된 경우그룹 에 의해, 그러나 특정 그룹 만 관심이 있습니다.조항을 사용할 수 있습니다.여기서clause, 결과에서 그룹을 제거합니다. 구문은 다음과 같습니다.

selectselect_listFrom ... [어디서 ...] 그룹에 의한 그룹 ...boolean_expression

표현절의 캔 그룹화 된 표현과 그룹화되지 않은 표현을 참조하십시오 (반드시 집계 기능이 포함됨).

예 :

= SOLECT X, sum (y) test1 Group에서 X에서 sum (y) 3;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절, 그룹화는 여전히 발생합니다. 결과 단일 그룹 행입니다 (또는 단일 행이라면 전혀 줄이 없습니다. 그런 다음에 의해 제거됩니다.). 마찬가지입니다 그것이 포함된다면조항 집계 기능 호출 또는없이그룹 에 의해절.

7.2.4. 창 함수 처리

쿼리에 창 함수가 포함 된 경우 (참조섹션 3.5, 섹션 9.21and섹션 4.2.8), 이러한 기능은 그룹화, 집계 및 후에 평가됩니다.필터링이 수행됩니다. 즉, IF입니다 쿼리는 골재를 사용합니다.그룹 by, 또는창 함수는 원래 토토 사이트 추천 대신 그룹 행입니다. 의 행From/여기서.

여러 창 함수가 사용되면 모든 창이 사용됩니다 구문 적으로 동등한 기능파티션 byand주문 by창 정의의 조항은 평가됩니다. 데이터를 통한 단일 패스. 그러므로 그들은 같은 것을 볼 것입니다 정렬 순서,라도주문 by주문을 독특하게 결정하지 마십시오. 그러나 보증은 없습니다 다른 기능의 평가에 대해파티션 by또는주문 by사양. (이 경우 일반적으로 정렬 단계가 필요합니다 윈도우 함수 평가의 패스 사이에 정렬은 다음과 같습니다. 행의 순서를 보존 할 수 없습니다.주문 by동등한 것으로 본다.)

현재, 창 함수는 항상 분명한 데이터가 필요합니다 따라서 쿼리 출력은 하나 또는 다른 사람에 따라 주문됩니다. 창 함수 '파티션 에 의해/주문 by조항. 그렇지 않습니다 그러나 이것에 의존하는 것이 좋습니다. 명시적인 최상위 사용주문 by조항을 확인하고 싶다면 결과는 특정한 방식으로 정렬됩니다.