본문 바로가기
오라클

오라클 - GROUP BY 정리

by onggury 2023. 2. 8.

 

 

이번 글에서는 GROUP BY절에 대해 정리해보겠습니다.

 

 

해당 글에서는 emp 테이블을 사용하였습니다.

 

 

 

 


 

 

1. GROUP BY 사용법

 

 

SELECT lower(ename), sum(sal)
FROM emp;

 

 

위 결과는 어떻게 나올까요? 사원의 이름을 모두 소문자로 바꾸고 sal급여는 전부 합한 값을 원합니다.

 

 

 

 

하지만 오류가 나옵니다.

 

이유는, 단일 행 함수와 그룹 함수는 함께 사용될 수 없기 때문입니다.

 

lower(ename)은 총 14개의 행이 나오겠죠.

 

 

 

단일 행 함수와 함께 사용하고 싶다면, GROUP BY 절을 사용함으로써 해결 할 수 있습니다.

 

SELECT lower(job), sum(sal)
FROM emp
GROUP BY job;

 

 

GROUP BY 는 특정 열 또는 데이터를 기준으로 데이터를 그룹으로 묶습니다.

 

즉,  위 예시는 GROUP BY절로 job을 기준으로 소그룹을 묶습니다. 총 5개의 그룹이 나오겠죠.

 

그리고 그 그룹끼리 연산을 진행합니다. 

 

또한 GROUP BY 절로 나온 데이터는 모두 가공된 데이터이며 실제 있는 데이터가 아닙니다.

실제 데이터라면, 결과로 나온 행이 emp 테이블에 있는 행이여야 겠죠.

 

 

 

 

다른 문제를 보겠습니다.

부서별 평균 추가 수당을 출력하는 쿼리를 작성하세요.
SELECT avg(comm), deptno
FROM emp
GROUP BY deptno;

 

 

 

 

 

 

이제 여러분들이 한번 해당 문제를 해결해 보세요. 답은 아래 적어놓겠습니다.

 

Emp 테이블에서 10번, 30번 부서에 소속된 사원들을 대상으로 각 업무별 급여의 평균을 출력하는 쿼리를 작성하세요.

결과

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

위 문제의 답 입니다.

SELECT job, avg(sal)
FROM emp
WHERE deptno in(10, 30)
GROUP BY job;