5.1 HAVING 문
GROUP BY
와 함께 사용되는 SQL의 또 다른 유용한 연산자는 이라고 합니다 HAVING
.
의미상 operator 와 완전히 유사합니다 WHERE
. WHERE
그룹화 전에 행 필터를 설정할 수만 있으며 도움말을 사용하여 그룹화 HAVING
후 레코드에 적용되는 필터를 설정할 수 있습니다.
그룹화 및 필터링 그룹화 결과를 사용할 때 일반적인 쿼리 보기는 다음과 같습니다.
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition
HAVING
요청에 가 포함된 경우에만 사용할 수 있습니다 GROUP BY
.
고용된 직원 수를 연도별로 표시하는 쿼리를 작성해 보겠습니다.
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
그리고 이 쿼리의 결과는 다음과 같습니다.
고용_연도 | 총 |
---|---|
2012년 | 1 |
2013년 | 1 |
2014년 | 1 |
2015년 | 2 |
2018년 | 1 |
이제 우리는 한 명 이하의 직원이 고용된 연도를 제외합니다. 예:
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
HAVING total > 1
그리고 이 쿼리의 결과는 다음과 같습니다.
고용_연도 | 총 |
---|---|
2015년 | 2 |
5.3 문 실행 순서
정확하고 효율적인 SQL 쿼리를 작성하려면 SQL 서버에서 쿼리가 실행되는 방식을 이해해야 합니다.
행동을 수행하는 절차는 엄격하게 규제되며 귀하의 욕구에 의존하지 않습니다. 연산자를 재정렬하여 다른 순서를 얻을 수 없습니다.
SQL 쿼리는 이 순서대로 여러 단계로 실행됩니다.
- 1단계 - 행 가져오기
- 먼저 지정된 테이블의 모든 행이 선택됩니다.
- 그런 다음 계산된 필드가 여기에 추가됩니다.
- 그러면 모든 행 중에서 조건을 만족하는 행만 남게 됩니다.
WHERE
- 2단계 - 그룹화
- 그런 다음 결과에 그룹화가 적용됩니다.
- 그룹화하는 동안
COUNT(*)
. - 마지막으로 그룹화 결과에 필터가 적용됩니다
HAVING
. - 3단계 - 분류
- 이전 단계에서 얻은 행은 를 사용하여 정렬됩니다
ORDER BY
.
마지막으로 결과는 LIMIT
및 로 다듬을 수 있습니다 OFFSET
.
GO TO FULL VERSION