SQL과 데이터베이스 - 조인과 집계 데이터 : HAVING 절


HAVING 절

이 학습은 패스트캠퍼스의 올인원 패키지 : 모두를 위한 SQL/DB 강의를 듣고 복습하는 내용입니다.

image

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;

image

  • 실습 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;

image

=> 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;

image

  • 실습 2에 사용할 GROUP BY 결과 확인
-- 매장별 고객의 수
SELECT
	  STORE_ID ,
	  COUNT(CUSTOMER_ID) AS COUNT
  FROM
	  CUSTOMER
GROUP BY STORE_ID;

image

  • 실습 2 (GROUP BY + HAVING)
-- 매장 고객이 300을 초과하는 매장만 뽑는 것
SELECT
	  STORE_ID ,
	  COUNT(CUSTOMER_ID) AS COUNT
  FROM
	  CUSTOMER
GROUP BY STORE_ID
HAVING COUNT(CUSTOMER_ID) > 300;

image

​ ## store_id = 1 인 가게의 정보확인

SELECT * FROM STORE WHERE STORE_ID = 1;

image


© 2021. All rights reserved.

----------Powered by Hydejack----------

kyusang Hwang