-
Oracle - 그룹함수 (avg, sum, min, max)DataBase/Oracle 2024. 8. 12. 22:25반응형
AVG : 총합을 구한다.
사원들의 급여 총합을 구한다.
SELECT sum(sal) FROM emp;
사원들의 커미션을 가져온다.
SELECT SUM(comm) FROM emp;
그룹함수에서는 null값을 제외하고 계산한다.
급여가 1500이상인 사원들의 급여 총합을 구한다.
SELECT sum(sal) FROM emp WHERE sal>=1500;
20번 부서에 근무하고 있는 사원들의 급여 총합을 구한다.
SELECT sum(sal) FROM emp WHERE DEPTNO = 20;
직무가 SALESMAN인 사원들의 급여 총합을 구한다.
SELECT sum(sal) FROM emp WHERE job = 'SALESMAN'
직무가 SALESMAN인 사원들의 이름과 급여 총합을 가져온다.
SELECT ENAME, SUM(SAL) FROM EMP WHERE JOB ='SALESMAN';
이렇게 생각할 수 있지만 해당 쿼리는 오류가 발생한다. ENAME의 경우 여러개의 행 출력되지만 SUM(SAL)의 경우 하나의 행만 출력되기 때문에 위의 쿼리는 오류가 발생한다.
AVG - 평균 구하기
전 사원의 급여 평균을 구한다.
SELECT TRUNC(AVG(sal)) FROM emp;
커미션을 받는 사원들의 커미션 평균을 구한다.
SELECT TRUNC(AVG(COMM)) FROM emp;
그룹함수의 경우 null을 제외하고 계산한다.
전 사원의 커미션의 평균을 구한다.
SELECT TRUNC(AVG(nvl(comm, 0))) FROM emp;
그룹함수의 경우 NULL을 제외하고 계산한다. 따라서 전사원의 커미션을 구하는 경우 커미션이 NULL인 경우가 있을 수 있으니 NVL함수를 사용하여 NVL(컬럼명, N) 함수를 활용한다면 해당 컬럼의 값이 NULL이라면 N값으로 변형해준다.
커미션을 받는 사원들의 급여 평균을 구한다.
SELECT trunc(avg(sal)) FROM emp WHERE comm IS NOT NULL;
30번 부서에 근무하고 있는 사원들의 급여 평균을 구한다.
SELECT trunc(avg(sal)) FROM emp WHERE DEPTNO = 30;
직무가 SALESMAN인 사원들의 급여 + 커미션 평균을 구한다.
SELECT TRUNC(AVG(sal + comm)) FROM emp WHERE job = 'SALESMAN' ;
COUNT - 총 수 / MIN - 최소값 / MAX - 최대값
사원들의 총 수를 가져온다.
SELECT count(empno) FROM emp;
사원들의 급여 최대, 최소값을 가져온다.
SELECT max(sal), min(sal) FROM emp;
반응형'DataBase > Oracle' 카테고리의 다른 글
Oracle - Having (0) 2024.08.13 Oracle - Group by (0) 2024.08.13 Oracle - DECODE, CASE 함수 (0) 2024.08.12 Oracle - 날짜함수의 모든 것 (0) 2024.08.12 Oracle 문자열 함수의 모든것 (0) 2024.08.11