이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

토토 결과 사용 기능

대부분의 다른 관계형 데이터베이스 제품과 마찬가지로포스트그레SQL집계 함수를 지원합니다. 안 집계 함수는 여러 입력에서 단일 결과를 계산합니다. 행. 예를 들어, 다음을 계산하는 집계가 있습니다.개수, 합계, 평균(평균),최대(최대) 및(최소) 세트 이상 인스턴스.

집합체 간의 상호 작용을 이해하는 것이 중요합니다 그리고 SQL어디에서그리고가지고 있는절. 의 근본적인 차이점어디에서그리고가지고 있는 중이다 이:어디에서그룹 앞에 입력 행을 선택합니다. 토토 결과가 계산됩니다(따라서 어떤 행이 토토 결과 계산), 반면가지고 있는그룹 및 토토 결과가 계산된 후 그룹 행을 선택합니다. 따라서,어디에서절에는 토토 결과가 포함되지 않을 수 있습니다. 기능; 토토 결과를 사용하려고 시도하는 것은 의미가 없습니다. 토토 결과에 대한 입력이 될 행을 결정합니다. 다른 한편으로는 손,가지고 있는절은 항상 다음을 포함합니다. 집계 함수. (엄밀히 말하면 다음과 같이 작성할 수 있습니다.가지고 있는토토 결과를 사용하지 않는 절, 하지만 그것은 낭비이다. 같은 조건이 더 많이 사용될 수 있습니다 효율적으로어디에서단계.)

예를 들어, 우리는 가장 높은 저온 수치를 찾을 수 있습니다 어디서나

날씨에서 최대(temp_lo) 선택;
우리가 어느 도시(또는 도시들)를 읽고 있는지 알고 싶다면 발생했습니다. 시도해 볼 수도 있습니다.
날씨에서 도시를 선택하세요. temp_lo = max(temp_lo);
그러나 토토 결과 이후에는 작동하지 않습니다.최대다음에서는 사용할 수 없습니다.어디에서. 그러나 종종 그렇듯이 쿼리는 다음과 같이 다시 설명될 수 있습니다. 의도한 결과를 달성합니다. 여기에서 a를 사용하여하위 선택:
날씨에서 도시를 선택하세요
    WHERE temp_lo = (날씨에서 최대(temp_lo) 선택);
하위 선택이 독립적이기 때문에 괜찮습니다. 계산과 별도로 자체 집계를 계산하는 계산 외부 선택에서 발생합니다.

집계는 또한 다음과 결합하여 매우 유용합니다.그룹별절. 예를 들어, 최대값을 얻을 수 있습니다. 각 도시에서 저온 관찰됨

도시 선택, 최대(temp_lo)
    날씨로부터
    도시별로 그룹화;
도시당 하나의 출력 행을 제공합니다. 우리는 이것을 필터링할 수 있습니다 다음을 사용하여 행을 그룹화했습니다.가지고 있는:
도시 선택, 최대(temp_lo)
    날씨로부터
    도시별 그룹
    최소(temp_lo) < 0;
이는 다음이 있는 도시에 대해서만 동일한 결과를 제공합니다. 일부 수치는 0 미만입니다. 마지막으로 도시에만 관심이 있다면 이름이 "로 시작하는 사람P", 그럴 수도 있겠네요
도시 선택, 최대(temp_lo)
    날씨로부터
    'P%' 같은 도시는 어디에?
    도시별 그룹
    최소(temp_lo) < 0;
도시 이름 제한을 다음에서 적용할 수 있습니다.어디에서, 토토 결과가 필요하지 않기 때문입니다. 이것이 더 제한을 추가하는 것보다 효율적입니다.가지고 있는, 왜냐하면 우리는 그룹화를 피하고 실패하는 모든 행에 대한 토토 결과 계산어디확인.