이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다43토토6463버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

2.7. 윈 토토 기능

대부분과 마찬가지로 기타 관계형 데이터베이스 제품,PostgreSQL집계 함수를 지원합니다. an 집계 함수는 여러 입력에서 단일 결과를 계산합니다 줄. 예를 들어, 계산할 골재가 있습니다.count, Sum, avg(평균),max(최대) 및min(최소) 세트 줄.

예를 들어, 우리는 가장 높은 온도 판독 값을 찾을 수 있습니다. 어디서나

날씨에서 MAX (TEMP_LO)를 선택하십시오;
Max
-----
  46
(1 행)

우리가 무엇을 알고 싶다면 독서가 발생한 도시 (또는 도시), 우리는 시도 할 수 있습니다

emp_lo = max (temp_lo); 날씨에서 도시를 선택하십시오.잘못된

그러나 이것은 윈 토토 이후로 작동하지 않습니다max여기서절. (이 제한은이기 때문에 존재합니다.여기서절은 어떤 행을 결정합니다 골재 계산에 포함됩니다. 분명히해야합니다 윈 토토 함수가 계산되기 전에 평가됩니다.) 그러나,) 그러나,) 그러나 종종 쿼리를 달성하기 위해리스트 될 수 있습니다. 여기에서 원하는 결과, 여기에서SubQuery:

날씨에서 도시를 선택하십시오
    여기서 temp_lo = (날씨에서 max (temp_lo)를 선택하십시오);
도시
-----------------
 샌프란시스코
(1 행)

하위 쿼리가 독립적 인 계산이기 때문에 괜찮습니다. 일어나는 일과 별도로 자체 윈 토토를 계산합니다. 외부 쿼리에서.

윈 토토는 또한와 함께 매우 유용합니다그룹 by조항. 예를 들어, 우리는 할 수 있습니다 각 도시에서 관찰 된 최대 저온을

City, Max (Temp_lo) 선택
    날씨에서
    도시 별 그룹;
도시 | 맥스
---------------+-----
 헤이워드 |  37
 샌프란시스코 |  46
(2 줄)

도시 당 하나의 출력 행을 제공합니다. 각 윈 토토 결과 그 도시와 일치하는 테이블 행에 계산됩니다. 우리는 필터링 할 수 있습니다 이 그룹화 된 행을 사용하여:

City, Max (Temp_lo) 선택
    날씨에서
    도시 별 그룹
    Max (temp_lo) <40;
도시 | 맥스
---------+-----
 헤이워드 |  37
(1 행)

우리에게 가지고있는 도시에 대해서만 동일한 결과를 제공합니다. 모두temp_lo40 미만의 값. 마지막으로, if 우리는 이름이 시작된 도시에만 관심이 있습니다"S", 우리는 할 수 있습니다

City, Max (Temp_lo) 선택
    날씨에서
    도시가 's%'를 좋아하는 곳(1)도시 별 그룹
    Max (temp_lo) <40;
(1)
the좋아요운영자는 패턴을 수행합니다 일치하고 설명되어섹션 9.7.

사이의 상호 작용을 이해하는 것이 중요합니다 윈 토토 및SQL's여기서and조항. 의 근본적인 차이여기서andis :여기서그룹 및 윈 토토가 계산되기 전에 입력 행을 선택합니다 (따라서 어떤 행이 윈 토토 계산에 들어가는 지 제어합니다), 반면후 그룹 행을 선택합니다 그룹과 윈 토토가 계산됩니다. 따라서여기서조항은 윈 토토 함수를 포함해서는 안됩니다. 윈 토토를 사용하여 어느 쪽을 결정하는 것은 의미가 없습니다. 행은 윈 토토에 입력됩니다. 반면에,절은 항상 윈 토토를 포함합니다 기능. (엄밀히 말하면, 당신은 a를 쓸 수 있습니다.사용하지 않는 조항 집계이지만 거의 유용하지 않습니다. 같은 조건이있을 수 있습니다 에서 더 효율적으로 사용여기서Stage.)

이전 예에서는 도시 이름을 적용 할 수 있습니다. 제한여기서골재. 이것은 제한을 추가하는 것보다 더 효율적입니다실패하는 모든 행에 대한 그룹화 및 윈 토토 계산여기서check.