SQL과 데이터베이스 - 조인과 집계 데이터 : HAVING 절
카테고리 : SQL >> Sqlgrammar
HAVING 절
이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.
HAVING 절 설명 및 특징
- HAVING 절은 GROUP BY 절에 의해 생성된 그룹행의 조건을 설정한다.
- 반면에 WHERE 절은 GROUP BY 절이 적용되기 전에 개별 행의 조건을 설정한다.
HAVING 절 문법
SELECT
COLUMN_1, -- GROUP BY 컬럼 기재
집계함수(COLUMN_2) -- 집계함수 사용
FROM
TABLE_NAME
GROUP BY COLUMN_1
HAVING 조건식; -- HAVING 절은 GROUP BY 절에 의해 생성된 그룹행의 조건을 설정한다.
HAVING 절 실습
- 실습 1에 사용할 GROUP BY 결과 확인
SELECT
CUSTOMER_ID,
SUM(AMOUNT) AS AMOUNT_SUM
FROM
PAYMENT
GROUP BY CUSTOMER_ID
ORDER BY AMOUNT_SUM DESC;
- 실습 1 (GROUP BY + HAVING 사용)
-- GROUP BY의 결과 값 중에서 SUM(AMOUNT)가 200을 초과하는 행을 출력한다.
SELECT
CUSTOMER_ID,
SUM(AMOUNT) AS AMOUNT_SUM
FROM
PAYMENT
GROUP BY CUSTOMER_ID
HAVING SUM(AMOUNT) > 200;
=> HAVING 절은 GROUP BY를 한 결과 중에서 뽑을 정보만 뽑는 것!
## 실습 1 DEVEPLOP (WHERE 절 추가)
-- CUSTOMER의 EMAIL 정보까지 보기위한 QUERY
SELECT
A.CUSTOMER_ID
B.EMAIL
, SUM(A.AMOUNT) AS AMOUNT_SUM
FROM
PAYMENT A
, CUSTOMER B
WHERE A.CUSTOMER_ID = B.CUSTOMER_ID
GROUP BY A.CUSTOMER_ID, B.EMAIL
HAVING SUM(A.AMOUNT) > 200;
- 실습 2에 사용할 GROUP BY 결과 확인
-- 매장별 고객의 수
SELECT
STORE_ID ,
COUNT(CUSTOMER_ID) AS COUNT
FROM
CUSTOMER
GROUP BY STORE_ID;
- 실습 2 (GROUP BY + HAVING)
-- 매장 고객이 300을 초과하는 매장만 뽑는 것
SELECT
STORE_ID ,
COUNT(CUSTOMER_ID) AS COUNT
FROM
CUSTOMER
GROUP BY STORE_ID
HAVING COUNT(CUSTOMER_ID) > 300;
## store_id = 1 인 가게의 정보확인
SELECT * FROM STORE WHERE STORE_ID = 1;