ABOUT ME

Today
Yesterday
Total
  • 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

    댓글

Designed by Tistory.