개발 & 데이터베이스/DB

오라클 그룹화 함수 (GROUP BY, HAVING)

K.두부 2022. 1. 16. 23:20
반응형
GROUP BY 정의

데이터를 그룹으로 묶을 때 사용하며 보통 집계함수인 COUNT, SUM, AVG, MAX, MIN 함수와 함께 사용함

 

GROUP BY 문법
SELECT [컬럼]
FROM [테이블명]
WHERE [조건]
GROUP BY [컬럼]
HAVING [조건]
GROUP BY 사용 방법

GROUP BY를 사용하기 위해 테스트 데이터를 생성하겠습니다.

CREATE TABLE EXA(
    NAME VARCHAR2(20) NOT NULL,
    SCORE INTEGER NOT NULL,
    GRADE INTEGER NOT NULL,
    PRIMARY KEY(NAME)
);

INSERT INTO EXA VALUES('홍길동', 70, 2);
INSERT INTO EXA VALUES('원숭이', 30,2);
INSERT INTO EXA VALUES('두부', 10,2);
INSERT INTO EXA VALUES('신동엽', 90,1);
INSERT INTO EXA VALUES('노진구', 100,1);
INSERT INTO EXA VALUES('퉁퉁이', 50,1);
INSERT INTO EXA VALUES('이슬이', 95,1);
INSERT INTO EXA VALUES('손오공', 35,1);

2학년 학생들의 평균 점수를 구하시오.

SELECT GRADE, AVG(SCORE) AS AVG
FROM EXA
WHERE GRADE = 2
GROUP BY GRADE

평균 점수가 70점 이상인 학년을 구하시오.

SELECT GRADE, AVG(SCORE) AS AVG
FROM EXA
GROUP BY GRADE
HAVING AVG(SCORE) >= 70

 

WHERE 절과 HAVING 절의 차이점은?

집계함수를 사용할 수 있는지, 없는지의 차이입니다. WHERE 절에서는 집계함수를 사용할 수 없지만 HAVING 절에서는 집계함수를 사용할 수 있습니다.

반응형