SQL 복습 (3) 복수행 함수

넙데데맨·2022년 12월 26일
0

복수행 함수

복수개의 행을 처리하여 한개의 결과를 구하는 함수

GROUP 함수

COUNT

해당 컬럼 조회 시 결과 값의 수
SELECT COUNT(comm) FROM emp;

SUM

해당 컬럼 조회 시 결과 값의 합
SELECT SUM(comm) FROM emp;

AVG

해당 컬럼 조회 시 결과 값의 평균
SELECT AVG(comm) FROM emp;

MAX

해당 컬럼 조회 시 결과 값 중 최대 값
SELECT MAX(comm) FROM emp;

MIN

해당 컬럼 조회 시 결과 값 중 최소 값
SELECT MIN(comm) FROM emp;

STDDEV

해당 컬럼 조회 시 결과 값의 표준편차
SELECT STDDEV(comm) FROM emp;

VARIANCE

해당 컬럼 조회 시 결과 값의 분산
SELECT VARIANCE(comm) FROM emp;

GROUP BY

같은 값을 가진 결과 값을 하나의 그룹으로 묶어주는 역할

SELECT deptno, AVG(NVL(sal,0)
FROM emp
GROUP BY deptno

SELECT deptno, job, AVG(NVL(sal,0))
FROM emp
GROUP BY deptno,job 

주의 사항

  • SELECT 절에 사용된 그룹함수 이외의 컬럼, 표현식은 반드시 GROUP BY 절에 사용되어야 한다.
SELECT deptno, job ,AVG(NVL(sal,0)) "AVG_SAL"
FROM emp
GROUP BY deptno

SELECT에 포함된 job 컬럼이 GROUP BY에 사용되지 않아 오류가 발생하게 된다.

  • GROUP BY 절에는 반드시 컬럼명을 사용한다. (Alias 사용 불가)

HAVING

GROUP 함수 조건을 걸 때 사용한다.
AND를 사용해서 조건을 추가할 수도 있다.

SELECT deptno, AVG(NVL(sal,0))
FROM emp
WHERE deptno >10
GROUP BY deptno
HAVING AVG(NVL(sal,0)) >2000;

집계용 함수

ROLLUP()

소그룹간의 합계를 계산하는 함수
GROUP BY로 묶은 각각의 소그룹 합계와 전체 합계를 모두 구할 수 있다.
ROLLUP(A,B) 를 했을 시 처음에 명시한 A에 대해서만 소그룹 합계를 내준다.

ROLLUP(A,B,C) 사용 시
ABC에 대한 소계, AB에 대한 소계, A에 대한 소계, 전체 합계를 보여주게 된다.

ROLLUP((A,B),C) 사용 시
ABC에 대한 소계, AB에 대한 소계, 전체 합계를 보여준다.

CUBE()

계산 가능한 소그룹간의 합계를 모두 반환한다.
CUBE(A,B)
전체합계와 A에 대한 소계, B에 대한 소계 그룹 컬럼으로 산출할 수 있는 모든 소계 합계 반환

GROUPING SETS

지정한 컬럼에 대해 컬럼별 소계 쿼리를 합친 결과가 조회된다.
GROUPING SETS(A,B)
A에 대한 소계, B에 대한 소계
GROUPING SETS(A,())
A에 대한 소계, 전체에 대한 소계

profile
차근차근

0개의 댓글