📌 GROUP BY

  • 그룹으로 묶어주는 역할
  • 집계 함수(Aggregate Function)를 함께 사용
    • AVG() : 평균
    • MIN() : 최소값
    • MAX() : 최대값
    • COUNT() : 행의 개수
    • COUNT(DISTINCT) : 중복 제외된 행의 개수
    • STDEV() : 표준 편차
    • VARIANCE() : 분산
  • 효율적으로 데이터 그룹화 (Grouping)
  • 읽기 좋게 하기 위해 별칭(Alias) 사용
// CountryCode를 그룹으로 묶으면서 Populiaton이 가장 큰 것만 조회
SELECT CountryCode, MAX(Population)
FROM city
GROUP BY CountryCode

 

 

📌 HAVING

  • WHERE과 비슷한 개념으로 조건 제한
  • 집계 함수에 대해서 조건 제한하는 편리한 개념
  • HAVING절은 반드시 GROUP BY절 다음에 나와야 함
SELECT CountryCode, MAX(Population)
FROM city
GROUP BY CountryCode
HAVING MAX(Population) > 8000000

 

 

📌 GROUP BY 절에서 조건을 주려면 WHERE이 아닌, HAVING절 사용해야 함 📌

 

왜 일까?!🧐

 

SELECT 실행 순서를 보면 WHERE 절이 GROUP BY 보다 먼저 실행되기 때문에,

GROUP BY에 대응되는 HAVING 절이 있음

 

수행 순서

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY
  7. LIMIT

HAVINGGROUP BY에 작성하며, WHERE과 동일한 형식으로 조건 작성 가능

+ Recent posts