그룹함수
하나 이상의 행을 그룹으로 묶어 연산하여 총합, 평균 등 하나의 결과로 나타내는 함수를 말한다. 그룹 함수를 통하여 결과를 도출할 때 NULL값은 제외하고 출력한다.
함수 | 설명 |
SUM | 그룹의 누적 합계 반환 |
AVG | 그룹의 평균 반환 |
COUNT | 그룹의 총 개수 반환 |
MAX | 그룹의 최대값을 반환 |
MIN | 그룹의 최소값을 반환 |
STDDEV | 그룹의 표준편차를 반환 |
VARIANCE | 그룹의 분산을 반환 |
# 모든 사원들의 sal(급여) 합계
SELECT SUM(sal) FROM emp; # 29,025
# deptno(부서번호) 20의 평균 사원 sal(급여)
SELECT AVG(sal) FROM emp WHERE deptno=20; # 2,175
# 사원 수 출력
SELECT COUNT(empno) FROM emp; # 14
SELECT COUNT(comm) FROM emp; # 4 - NULL 값은 제외
# deptno(부서번호) 10 중 가장 높은 sal(급여)
SELECT MAX(sal) FROM emp WHERE deptno=10; # 5,000
# deptno(부서번호) 10 중 가장 낮은 sal(급여)
SELECT MIN(sal) FROM emp WHERE deptno=10; # 1,300
# deptno(부서번호) 20의 sal(급여) 표준편차
SELECT STDDEV(sal) FROM emp WHERE deptno=20; #1,004.73878
GROUP BY
GROUP BY 절은 그룹함수와 함께 쓰여 그룹화된 데이터에 대해 집계 결과를 출력한다. 만약 그룹화조건이 여러개일 경우에는 그룹화조건에 컴마(,)를 사용해서 여러 조건을 줄 수 있다.
- SELECT 그룹함수(칼럼명) FROM 테이블 GROUP BY 그룹화조건;
# deptno(부서번호)별 평균 sal(급여)
SELECT deptno, AVG(sal) FROM emp GROUP BY deptno;
# deptno(부서번호)별 최소 sal(급여), 최대 sal(급여)
SELECT deptno, MIN(sal), MAX(sal) FROM emp GROUP BY deptno;
# deptno(부서번호), job(직업)별 평균 sal(급여)
SELECT deptno, job, AVG(sal) FROM emp GROUP BY deptno, job;
HAVING 절
GROUP BY를 통해 그룹화된 결과에 조건을 적용하기 위해서 사용되는 절이다. 개별 행에 대한 조건은 WHERE 절로 처리하며, 그룹화된 결과에 대한 조건은 HAVING 절로 처리해야 한다.
- SELECT 그룹함수(칼럼명) FROM 테이블 GROUP BY 그룹화조건 HAVING 조건;
# 평균 급여가 2000이상인 부서번호, 평균 급여
SELECT deptno, AVG(sal) from emp GROUP BY deptno HAVING AVG(sal)>=2000;
ROLLUP
그룹화된 결과에 대한 추가적인 총계를 추가해서 결과를 도출한다.
- SELECT 그룹함수(칼럼명) FROM 테이블 GROUP BY 그룹화조건 WITH ROLLUP;
SELECT deptno, AVG(sal) from emp GROUP BY deptno WITH ROLLUP;
'Database > MariaDB' 카테고리의 다른 글
MariaDB : DML(Data Manipulation Language)에 대해서 (1) | 2024.10.16 |
---|---|
MariaDB : DDL(Data Definition Language)에 대해서 (0) | 2024.10.16 |
MariaDB : 서브쿼리에 대해서 (0) | 2024.10.15 |
MariaDB: JOIN절에 대해서 (0) | 2024.10.15 |
MariaDB : SQL 주요함수에 대해서 (0) | 2024.10.14 |
MariaDB : ORDER BY절에 대해서 (0) | 2024.10.14 |
MariaDB : WHERE 조건문에 대해서 (0) | 2024.10.11 |
MariaDB : SELECT문에 대해서 (0) | 2024.10.11 |