📌 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 절이 있음
수행 순서
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- LIMIT
HAVING은 GROUP BY 뒤에 작성하며, WHERE과 동일한 형식으로 조건 작성 가능
'SQL' 카테고리의 다른 글
[SQL] (프로그래머스/MySQL/Level 3)_자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 (0) | 2024.01.28 |
---|---|
[SQL] (프로그래머스/MySQL/Level 3)_즐겨찾기가 가장 많은 식당 정보 출력하기 (0) | 2024.01.26 |
[SQL] (프로그래머스/MySQL/Level 4)_오프라인/온라인 판매 데이터 통합하기 (0) | 2024.01.22 |
[SQL] LIKE() 함수 : 특정 문자 포함해서 검색 (MYSQL) (0) | 2024.01.17 |
[SQL] (프로그래머스/MySQL/Level 1)_평균 일일 대여 요금 구하기 (0) | 2024.01.16 |