본문 바로가기

자린고비 독학하기/자린고비 코딩하기

SQL - 그룹 함수 / GROUP BY / HAVING

반응형

 

그룹 함수

  • 다중 데이터를 받아서, 단일 행으로 결과가 반환되는 함수이다. 

 

 

 

SUM 

  • 합계를 구하는 함수

 

 SELECT SUM(sal) FROM emp;

emp 테이블에 있는 sal 열에 대한 총합

 

 

AVG

  • 평균을 구하는 함수

 SELECT AVG(sal) FROM emp;

emp 테이블에 있는 sal 열에 대한 평균 값

 

 

MAX / MIN 

  • 최대 / 최소를 구하는 함수

 

SELECT MAX(sal),MIN(sal) FROM emp;

emp 테이블의 sal 열 중 가장 큰 값, 가장 작은 값을 구했다.

 

 

COUNT 

  • 해당 컬럼에 문자가 있는 열의 개수를 구하는 함수
  • COUNT(*)은 컬럼 개수 전체를 반환한다.

 SELECT COUNT (comm) FROM emp;

comm 열에 값이 있는 수를 COUNT 했다.

 

SELECT COUNT(*), COUNT (comm) FROM emp;

비교를 위해 emp 테이블의 전체 행 수 / comm 열에 값이 있는 수를 COUNT 했다.

 

 

GROUP BY

  • 특정 속성을 기준으로 하여 해당 값을 그룹화할 때 사용되는 함수이다.
  • 반드시 그룹 함수와 함께 사용된다. 

 

 SELECT deptno FROM emp GROUP BY deptno;

특정 속성의 중복 값에 대해서 GROUP BY를 통해 그룹을 나눌 수 있다.

 

 SELECT deptno, AVG(sal) FROM emp GROUP BY deptno;

부서 별 급여의 평균갑 구하는 쿼리문 - GROUP BY를 이용하면 그룹별로 연산이 이루어진다. 

 

SELECT deptno, SUM(sal), AVG(sal) FROM emp GROUP BY deptno;

부서 별 급여의 총합, 평균값 구하는 쿼리문

 

 

SELECT deptno, MAX(sal), MIN(sal) FROM emp GROUP BY deptno;

부서 별 가장 큰 값, 가장 작은 값을 구하는 쿼리문

 

 SELECT deptno, COUNT(*), COUNT(comm) FROM emp GROUP BY deptno;

부서 별로 전체 인원, 커미션을 받는 사원을 구하는 쿼리문

 

 

HAVING 

 

  • 그룹 함수에 대한 WHERE절이라고 생각하면 무방하며,  반드시 그룹 함수와 함께 사용된다. 
  • 단순 컬럼에 조건을 걸기 위해서는 WHERE, 그룹 함수를 적용한 컬럼에 조건을 걸기 위해서는 HAVING

 

부서 별 평균 급여 중, HAVING 절로 2000 이하의 평균 급여 값을 가진 30번 부서는 제외되었다. 

 

부서 별 최대 급여 중, HAVING 절의 조건을 만족하는 10번 부서만 출력되었다.

 

 

단일 함수와 그룹 함수 간의 관계 

 

 

ename은 단일 행 함수인데,  MAX(sal)은 복수 행의 함수이기 때문에 행 값이 달라서 오류가 출력된다. 

 

  • 서브 쿼리 

 

서브쿼리를 이용하여 단일 함수와 그룹 함수를 함께 사용할 수 있다. 

 

만일 하나의 쿼리 안에서 단일 함수와 그룹 함수를 사용해 줘야 한다면, 서브 쿼리를 이용할 수 있다. 

 

 

반응형

'자린고비 독학하기 > 자린고비 코딩하기' 카테고리의 다른 글

SQL - DATA DICTIONARY VIEW  (0) 2019.08.01
SQL - JOIN  (0) 2019.07.31
SQL - NVL / DECODE / CASE  (0) 2019.07.31
"NULL"은 무엇인가?  (0) 2019.07.31
SQL - 날짜 함수 / 날짜 연산  (0) 2019.07.31