toggle menu

Oracle 그룹 함수

2012. 7. 10. 11:04 Database/Oracle



SELECT 절에 조건을 사용하여 결과를 제한할 때는 WHERE 문을 사용하고, 그룹의 결과를 제한할 때는 HAVING절을 사용한다.

그룹별로 결과를 가져오기 위해서는, SELECT 뒤와, GROUP BY 뒤와, HAVING 뒤의 컬럼 조건이 모두 같은 컬럼을 사용해서 조건을 제한해야 한다.


AVG, SUM, MAX, MIN, *NVL

SQL> SELECT ROUND(AVG(중간성적),2) 중간평균, ROUND(AVG(기말성적),2) AS 기말평균
FROM 등록;

  중간평균   기말평균
---------- ----------
     83.75      84.17



SQL> SELECT ROUND(SUM(중간성적),2) 중간합계, ROUND(AVG(기말성적),2) AS 기말평균
FROM 등록;

  중간합계   기말평균
---------- ----------
      1005      84.17




SQL> SELECT SUM(NVL(COMM,0))
FROM EMP;

SUM(NVL(COMM,0))
----------------
            2200



SQL> SELECT MAX(SAL) 최대급여, MIN(SAL) 최소급여
FROM EMP;

  최대급여   최소급여
---------- ----------
      5000        800



SQL> SELECT MAX(학년), MIN(학년)
FROM 학생
WHERE 학과='컴퓨터';

 MAX(학년)  MIN(학년)
---------- ----------
         4          1



SQL> SELECT AVG(중간성적), AVG(기말성적)
FROM 등록
WHERE 학번=400;

AVG(중간성적) AVG(기말성적)
------------- -------------
         82.5         86.25



SQL> SELECT 학과, AVG(학번)
FROM 학생
GROUP BY 학과;

학과             AVG(학번)
--------------- ----------
컴퓨터                 275
경영                   400
전자공학               600




SQL> SELECT DEPTNO 부서번호, ROUND(AVG(SAL),2) 월급평균
FROM EMP
GROUP BY DEPTNO;

  부서번호   월급평균
---------- ----------
        30    1566.67
        20       2175
        10    2916.67



SQL> SELECT DEPTNO 부서번호, MAX(SAL) 월급최대, MIN(SAL) 월급최소
FROM EMP
GROUP BY DEPTNO
ORDER BY DEPTNO ASC;

  부서번호   월급최대   월급최소
---------- ---------- ----------
        10       5000       1300
        20       3000        800
        30       2850        950














Database/Oracle 관련 포스팅 더보기