고급 그룹화

사용 가능

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. 1단계 - 행 가져오기
    • 먼저 지정된 테이블의 모든 행이 선택됩니다.
    • 그런 다음 계산된 필드가 여기에 추가됩니다.
    • 그러면 모든 행 중에서 조건을 만족하는 행만 남게 됩니다.WHERE
  2. 2단계 - 그룹화
    • 그런 다음 결과에 그룹화가 적용됩니다.
    • 그룹화하는 동안 COUNT(*).
    • 마지막으로 그룹화 결과에 필터가 적용됩니다 HAVING.
  3. 3단계 - 분류
    • 이전 단계에서 얻은 행은 를 사용하여 정렬됩니다 ORDER BY.

마지막으로 결과는 LIMIT및 로 다듬을 수 있습니다 OFFSET.

코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다