[MySQL/DB] 집계함수와 그룹화(GROUP BY)

Tech/Database 2023. 1. 8. 12:41
728x90
728x90

집계함수


NULL값은 집계하지 않는다.

 

함수 설명
MAX 최대값
MIN 최소값
SUM 합계
AVG 평균
COUNT 개수

 

 

Oracle의 EMP 테이블로 사용해보자. 혹시 없다면 해당 링크에서 데이터를 추가하기 바란다.

SELECT MAX(SAL) FROM EMP;
SELECT MIN(SAL) FROM EMP;
SELECT SUM(SAL) FROM EMP;
SELECT TRUNCATE(AVG(SAL), 2) FROM EMP;
SELECT COUNT(COMM) FROM EMP;
>> 5000 / 800 / 29025 / 2073.21 / 4

 

 

 

그룹화(GROUP BY)


유형별 개수를 알고 싶을 때 데이터의 그룹화를 위해 사용하는 절이다.

WHERE절과 ORDER BY절 사이에 위치해야 한다.

 

사용하기

-- 기본
SELECT 컬럼
  FROM 테이블
 GROUP BY 그룹화할 컬럼;
 
-- 조건 처리 후 그룹화
 SELECT 컬럼
  FROM 테이블
 WHERE 조건
 GROUP BY 그룹화할 컬럼;

-- 그룹화 후 조건처리
 SELECT 컬럼
  FROM 테이블
 GROUP BY 그룹화할 컬럼;
HAVING 조건

-- 조건 처리 후 그룹화 후 그룹화 한 데이터에 조건처리
SELECT 컬럼
  FROM 테이블
 WHERE 조건
 GROUP BY 그룹화할 컬럼;
HAVING 조건

 

아래의 예시는 EMP테이블에서 부서번호를 기준으로 그룹화 하여 부서번호 별 사원수와 최대급여 최소급여 급여합계 평균급여의 값을 조회했으며 조회할 때의 컬럼명을 변경해 주었다.

SELECT DEPTNO 부서번호, COUNT(*) 사원수, MAX(SAL) 최대급여,
	   MIN(SAL) 최소급여, SUM(SAL) 급여합계, TRUNCATE(AVG(SAL), 2) 평균급여
  FROM EMP
 GROUP BY DEPTNO;

728x90
300x250
mag1c

mag1c

2년차 주니어 개발자.

방명록