SQL의 HAVING 절과 WHERE 절의 차이점에 대한 자세한 설명
SQL에서 HAVING
및 WHERE
키워드는 데이터를 필터링하는 데 사용되지만 기능은 다릅니다. 둘 다 조건부 선택에 사용되지만 GROUP BY
절의 유무에 따라 적용이 달라집니다.
WHERE 절
WHERE
절은 집계 작업 전에 실행되며 해당 값을 기반으로 특정 행을 선택합니다. 예를 들어, 다음 쿼리는 20세 이상의 모든 학생 이름을 검색합니다.
<code class="language-sql">SELECT Name FROM Students WHERE Age > 20;</code>
HAVING 절
반대로 HAVING
절은 집계 함수를 적용한 후 실행됩니다. 집계된 값을 기준으로 행 그룹을 필터링합니다. 이는 집계된 결과를 검사해야 하는 시나리오에 유용합니다.
예를 들어 다음 쿼리는 각 도시의 평균 학생 연령을 검색한 후 결과를 필터링하여 평균 연령이 25세보다 큰 도시만 표시합니다.
<code class="language-sql">SELECT City, AVG(Age) AS AvgAge FROM Students GROUP BY City HAVING AvgAge > 25;</code>
주요 차이점
HAVING
과 WHERE
의 근본적인 차이점은 실행 시간입니다. WHERE
은 집계 전 행을 필터링하고, HAVING
은 집계 후 그룹을 필터링합니다. 즉, HAVING
는 집계된 값의 조건을 확인하는 데 사용되고, WHERE
은 개별 행 값의 조건을 확인하는 데 사용됩니다.
예
샘플 데이터가 포함된 다음 표를 고려하세요.
City | Age |
---|---|
Boston | 22 |
Boston | 25 |
New York | 28 |
New York | 30 |
Los Angeles | 23 |
Los Angeles | 29 |
WHERE를 사용한 쿼리:
<code class="language-sql">SELECT City, COUNT(*) AS Count FROM Students WHERE Age > 25;</code>
출력:
City | Count |
---|---|
New York | 2 |
HAVING을 사용한 쿼리:
<code class="language-sql">SELECT City, COUNT(*) AS Count FROM Students GROUP BY City HAVING COUNT(*) > 1;</code>
출력:
City | Count |
---|---|
Boston | 2 |
New York | 2 |
이 예에서 WHERE
절은 25세 이상의 학생 수를 검색하고, HAVING
절은 각 도시에서 학생이 1명 이상인 도시를 검색합니다.
위 내용은 SQL의 WHERE와 HAVING: 언제 각 절을 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!