>데이터 베이스 >MySQL 튜토리얼 >WHERE vs. HAVING: 집계된 데이터를 찾기 위해 언제 각 절을 사용해야 합니까?

WHERE vs. HAVING: 집계된 데이터를 찾기 위해 언제 각 절을 사용해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-21 09:41:07913검색

WHERE vs. HAVING: When Should You Use Each Clause to Find Aggregated Data?

SQL: HAVING과 WHERE – 집계된 데이터 필터링

이 문서에서는 특히 집계된 데이터로 작업할 때 SQL의 WHERE 절과 HAVING 절 간의 주요 차이점을 보여줍니다. 가장 전문적인 강사를 찾는 예를 들어보겠습니다. WHERE 절만으로는 이 작업에 충분하지 않습니다. HAVING 절이 필요합니다.

차이의 이해

WHERE 절은 그룹화가 발생하기 전에 개별 행을 필터링합니다. 테이블 내의 개별 레코드에 조건을 적용합니다. 반대로 HAVING 절은 이후 그룹화를 필터링하여 COUNT, SUM, AVGMIN과 같은 집계 함수에서 작동합니다. 이는 강사 전문화 예시처럼 집계 결과를 기준으로 필터링할 때 매우 중요합니다.

모범 사례

명확성과 효율성을 위해 일반적인 규칙은 WHERE 앞에 GROUP BY를 사용하고 HAVING 뒤에 GROUP BY를 사용하는 것입니다. 이 접근 방식은 쿼리 구성을 단순화하고 가독성을 향상시킵니다.

최적화된 쿼리

다음 쿼리는 ANSI 조인과 HAVING 절을 사용하여 최대 전문 분야 수를 가진 강사를 효율적으로 식별합니다.

<code class="language-sql">SELECT  L.LectID, Fname, Lname
FROM Lecturers L
JOIN Lecturers_Specialization S ON L.LectID = S.LectID
GROUP BY L.LectID, Fname, Lname
HAVING COUNT(S.Expertise) >= ALL
(SELECT COUNT(Expertise) FROM Lecturers_Specialization GROUP BY LectID)</code>

이 수정된 쿼리에서는 WHERE 절을 테타 조인 조건으로 사용할 필요가 없어 쿼리가 더욱 간편해지고 효율적이게 됩니다.

위 내용은 WHERE vs. HAVING: 집계된 데이터를 찾기 위해 언제 각 절을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.