mssql having 예제

mssql having 예제

HAVING 절의 작동 방식을 이해하기 위해 몇 가지 예를 들어 보겠습니다. 이 예제에서는 모든 직원의 전체 평균보다 더 큰 휴가 시간을 갖는 직원 직책을 선택합니다. 하위 쿼리로 대체 될 빨간색 값을 강조 표시했습니다. 우리는 다음과 같이 HAVING 절에서 MIN 함수를 사용하여 $ 5보다 낮은 각 범주에서 가장 저렴한 제품을 찾을 수 있습니다 : 그룹 별 절의 효과를 이해하기 위해 모든 성별 항목을 반환하는 간단한 쿼리를 실행해 보겠습니다 f 멤버 테이블을 롬. 즉, 우리는 “결혼한 회계사가 일반적으로 결혼한 직원보다 평균적으로 더 많은 휴가를 보내고 있습니까?” 와 유사한 질문에 답하고 싶습니다. 다음은 Northwind 샘플 데이터베이스의 “Orders” 테이블의 선택 사항입니다. 다음은 HAVING 절 구문을 보여 줍니다: HAVING 절의 하위 쿼리를 사용 하 여 레코드 그룹을 필터링할 수 있습니다. WHERE 절이 레코드 행을 필터링하는 데 사용되는 것처럼 HAVING 절은 그룹을 필터링하는 데 사용됩니다. 따라서 평균, 합계 및 개수와 같은 집계 값을 필터링하는 데 매우 유용합니다. 다른 쿼리와 마찬가지로 HAVING 절에서 상관 하위 쿼리를 빌드할 수 있습니다. 이 기능은 하위 쿼리가 외부 쿼리의 열 값에 종속되어 있고 쿼리를 처음에 쉽게 이해할 수 있는 경우에 유용할 수 있습니다. 그러나 주의를 기울여야 합니다! 모든 SQL과 마찬가지로 일반적으로 동일한 결과를 반환하는 쿼리를 작성하는 방법에는 여러 가지가 있습니다.

성능이 중요한 경우 쿼리 계획을 사용하여 성능을 이해하고 대안을 탐색합니다. 또한 상관 쿼리를 사용하면 GROUP BY에 사용되는 필드만 내부 쿼리에서 사용할 수 있습니다. 예를 들어, 킥과 미소를 위해, 나는 성별으로 결혼 상태를 대체하려고하고 오류가 발생했습니다. 영화 카테고리_id 및 해당 연도의 목록을 얻으려면 한다고 가정합니다. 예를 들어 이제 그룹의 평균을 전체 평균과 비교할 수 있습니다. 우리는 항상 HAVING 절에서 그룹의 평균을 사용할 수 있었지만 전체 평균을 cmputer로 사용할 방법이 없었습니다. 이제 하위 쿼리를 사용하여 이 작업을 할 수 있습니다. GROUP BY 절은 위의 예제에서 고유한 행을 식별하기 위해 릴리스된 범주 ID와 연도 모두에서 작동합니다. 다음 문은 먼저 각 제품 범주의 최대 및 최소 정가를 찾습니다. 그런 다음 최대 정가가 4,000 개 또는 최소 정가가 500 보다 작은 범주를 필터링합니다. 먼저 외부 쿼리에서 Employee를 “E”로 별칭했습니다. 이렇게하면 내부 쿼리 내의 외부 테이블을 참조 할 수 있습니다.

다음 SQL 문은 각 국가의 고객 수를 나열하고 높음에서 낮음으로 정렬됨(5개 이상의 고객만 포함) 영화 범주 ID 8의 모든 릴리스 연도를 알고 있다고 가정합니다. 결과를 얻으려면 다음 스크립트를 사용합니다. HAVING 절은 그룹 행의 데이터를 필터링하지만 개별 행에는 포함되지 않습니다. 범주 ID 8이 있는 동영상만 그룹 BY 절의 영향을 받았습니다. 두 개의 결과만 반환되었습니다. 왜냐하면 우리는 남성과 여성의 성별 유형이 두 개에 불과하기 때문입니다. GROUP BY 절은 모든 “Male” 멤버를 함께 그룹화하고 단일 행만 반환했습니다. 그것은 “여성”회원도 마찬가지였다. HAVING 절에서 하위 쿼리를 사용하는 힘은 이제 비교 내에서 하드 코딩 값을 할 필요가 없습니다. 하위 쿼리의 결과에 의존하여 수행할 수 있습니다. 이 예제에서는 총 판매량이 $12000보다 큰 판매 주문을 찾습니다.