postgresql 서브쿼리 예제

하위 쿼리는 검색할 데이터를 추가로 제한하는 조건으로 주 쿼리에서 사용되는 데이터를 반환하는 데 사용됩니다. big_table의 모든 행에 대한 읽기 및 개수 작업을 수행하지 않도록 WHERE 절을 하위 쿼리로 “푸시”하여 쿼리를 최적화할 수 있습니다. 첫 번째 쿼리의 결과를 하나의 쿼리에서 두 번째 쿼리에 전달하는 방법을 원합니다. 해결책은 하위 쿼리를 사용하는 것입니다. 와에서 데이터 수정 문 (INSERT, UPDATE 또는 DELETE)을 사용할 때와 같이 최적화 울타리가 유용한 경우도 있습니다. CTE가 한 번만 실행되기 때문에 플래너가 하위 쿼리를 여러 번 호출할 수 있고 삭제되거나 업데이트된 행의 정보를 반환하지 않는 결과와 동일합니다. 참고: 하위 쿼리가 1700위치에 두 개 이상의 부서를 찾을 가능성이 있으므로 이 쿼리에서 모든 키워드를 사용했습니다. 모든 키워드 대신 ALL 키워드를 사용하는 경우 하위 쿼리를 사용하여 1700 위치의 모든 부서에서 직원이 작동하지 않고 직원의 `Alexander` 보다 많은 급여를 지불한 직원의 이름을 나열하므로 데이터가 선택되지 않습니다. FROM 절의 모든 테이블에는 이름이 있어야 하므로 [AS] 이름 절이 필수입니다. 하위 쿼리 선택 목록의 모든 열에는 고유한 이름이 있어야 합니다. 다음 예제에서 쿼리는 위의 조건에 따라 다른 결과를 보여 주며 다음 쿼리는 평균 급여가 가장 높은 부서를 선택합니다. 하위 쿼리는 각 부서의 평균 급여를 찾은 다음 주 쿼리에서 평균 급여가 가장 높은 부서를 선택합니다.

예를 들어 회사 전체의 평균 급여보다 평균 급여가 높은 직원의 직원 ID, first_name, last_name 및 급여를 찾으려고 한다고 가정합니다. EXISTS 연산자는 행의 내용이 아닌 하위 쿼리에서 반환되는 행 수에만 신경 을 써므로 EXISTS 연산자의 일반적인 코딩 규칙은 다음과 같습니다: 임시 또는 TEMP)는 현재 세션의 끝에 자동으로 삭제됩니다. 사용 사례에 따라 임시 보기를 사용할 수도 있습니다. 예를 들어 임시 뷰를 사용하면 여러 조인, 테이블 및 계산을 통해 생성된 특정 데이터 포인트의 유효성을 검사하거나 테스트하는 데 매우 유용할 수 있습니다. 복잡한 데이터 유효성 검사를 수행하려면 읽고 이해하기 어려울 뿐만 아니라 성능이 떨어지는 크고 복잡한 쿼리가 필요한 경우가 많습니다. 여러 하위 쿼리/인라인 보기로 구성된 큰 쿼리는 많은 양의 스풀 공간과 컴퓨팅 리소스를 활용할 수 있으므로 쿼리 성능이 저하되고 응용 프로그램의 성능이 저하됩니다. 이러한 경우 일반적으로 훨씬 더 나은 아이디어이며 하나 이상의 뷰를 만드는 것이 좋습니다. 이전 섹션에서는 많은 양의 레코드에 소비자 불만 내러티브 필드에 대한 null 값이 있다고 판단했습니다. 나중에 이 필드를 필터링하는 대신 나중에 사용할 뷰를 만듭니다.

Share on Facebook