SQL 복습 (3) 복수행 함수

넙데데맨·2022년 12월 26일
0
post-custom-banner

복수행 함수

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

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
차근차근
post-custom-banner

0개의 댓글