(오라클/SQL) 그룹 기능 -1

GROUP BY를 사용하는 경우 SELECT절에 나타날 수 있는 열이 결정됩니다.

1. 그룹화된 컬럼
2. 그룹화 기능(하나의 데이터만 조회)

그룹 기능이란 무엇입니까?

이 함수는 하나 이상의 열 값에 따라 테이블의 모든 행을 그룹화하고 그룹별로 결과를 출력합니다.
다중 행 함수라고도 합니다.
그룹 기능의 유형에는 다음이 포함됩니다. 개수, 최대, 최소, 합계, 평균, STDDEV, 분산 등.


EMP 테이블에는 14개의 데이터가 있습니다.

1
2
선택하다 DEPTNO, SUM(SAL)
에서 EMP;
CS

무엇이 나올까요?


오류가 발생합니다.

SUM(SAL)은 하나의 값을 가집니다. 그러나 DEPTNO는 직원 수만큼 나옵니다. 100명이 있으면 100개의 검색 결과가 있습니다.

즉, 100개의 DEPTNO가 나타나고 1개의 SUM(SAL)이 나타나므로 행의 수가 일치하지 않아 오류가 발생한다.

1
2
선택하다 DEPTNO, SUM(SAL)
에서 EMP
그룹 에 의해 DEPTNO;
CS

부서별 총급여를 찾아봤습니다.

이렇게 DEPTNO로 그룹을 만들면


정상적으로 데이터가 나오는 것을 볼 수 있습니다.


총급여, 평균급여, 부서별 인원수 조회

예-1)

직위별 직원 수와 해당 직위의 최고 및 최저 급여를 쿼리합니다.

다만, ‘대통령’의 직함을 가진 자는 제외한다.

1
2
4
선택하다 최대(SAL), 최소(SAL) , 작업
에서 EMP
어디 직업 != ‘최고 경영자’
그룹 에 의해 직업;
CS


예-2)

직급별로 직급별 최고 연봉과 최저 연봉을 검색합니다.

단, 직책당 최저 급여가 300 이상인 데이터.

1
2
4
선택하다 최대(SAL), 최소(SAL) , 작업
에서 EMP
그룹 에 의해 직업
HAVING MIN(SAL) >= 300 ;
CS


HAVING은 GROUP BY 상태에서만 사용할 수 있습니다.

예-3)

부서번호, 급여총액, 커미션 합계, 평균 커미션을 부서별로 검색하되, 부서 10을 제외하고 부서별 급여의 합계가 300 미만인 부서를 제외하고 부서번호를 기준으로 내림차순으로 정렬합니다.

1
2
4
5
6
선택하다 DEPTNO, SUM(SAL), SUM(NVL(COMM,0)) , AVG(NVL(COMM,0))
에서 EMP
어디 DEPTNO != 10
그룹 에 의해 DEPTNO
합계(SAL) >= 300
주문하다 에 의해 DEPTNO DESC;
CS