[Oracle SQL] 오라클 GROUP BY(GROUPING) 알아보기.

2021-04-12


Photo by Stavrapid on Unsplash

테이블에 존재하는 각 속성을 하나의 그룹으로 만들어 원하는 데이터를 추출하는 GROUPING에 대하여 알아보자.


- 예제

 

아래는 SENUM을 기본키로 가지는 SEE_INFO 테이블이다. 아래의 테이블을 기준으로 GROUPING을 진행해 보겠다.

 


- GRADE(학년)별 존재하는 학생 수

 

-- 학년별 몇명의 사람이 있는지 그룹을 지정해서 보여주기
SELECT GRADE 학년, COUNT(GRADE) 학생수 FROM SEE_INFO GROUP BY GRADE;

 

위의 코드는 학년별로 총학생의 수를 선택하는 코드이다. 학년별 학생의 수를 보여줄 거기 때문에 GROUP BY로 GRADE를 묶어 주었으며, 이후 COUNT 집계함수를 통해 그룹별 몇 명의 학생이 있는지 체크한다. 위의 코드의 결과는 아래와 같이 출력된다.


- 학생수가 3명 이상인 GRADE (HAVING)

 

-- 한 학년의 학생의 수가 3명 이상인 학급 보여주기
SELECT GRADE 학년, COUNT(GRADE) 학생수 FROM SEE_INFO GROUP BY GRADE
HAVING COUNT(GRADE) >= 3;

 

이번에는 GROUP BY의 조건절 HAVING을 이용해보자. 기존의 학년별 학생의 수를 통해 한 한년에 3명 이상인 학년만 보여 주도록 해보자. 여기서 HAVING 조건절을 HAVING COUNT(GRADE) > 3; 로 주면 COUNT 된  GRADE 들 중 3명 이상인 곳 만 나타나게 된다. 주의할 점은 GROUPING 된 요소에 HAVING대신 WHERE 절로 조건을 줄 경우 구문 오류가 발생해 실행되지 않는다.

 


메인 이미지 출처: Photo by Stavrapid on Unsplash