티스토리 뷰

다중행 함수

  • 여러 행의 값을 하나의 값으로 만들어 출력

  • SUM, COUNT, MAX, MIN, AVG

    -- SUM. ALL SAL과 SAL 합계는 동일
    SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL) FROM EMP; 
    
    -- COUNT 
    SELECT COUNT(*) FROM EMP; -- 테이블의 모든 행 수
    SELECT COUNT(*) FROM EMP WHERE DEPTNO = 30; 
    SELECT COUNT(*) FROM EMP WHERE COMM IS NOT NULL;
    
    -- MAX, MIN
    SELECT MAX(HIREDATE) FROM EMP WHERE DEPTNO = 10; -- 부서번호가 10이면서 가장 입사일이 최근인 사람
    
    -- AVG
    SELECT AVG(DISTINCT SAL) FROM EMP WHERE DEPTNO = 30; 
    

     

데이터 그룹화 GROUP BY, HAVING

  • GROUP BY

    -- 부서번호 그룹에 따라 급여 평균 구하기
    SELECT AVG(SAL), DEPTNO FROM EMP GROUP BY DEPTNO; 
    

     

  • HAVING(조건)

    -- GROUP BY절이 존재할 때에 그룹화된 결과의 범위를 제한
    SELECT DEPTNO, JOB, AVG(SAL) FROM EMP
    GROUP BY DEPTNO, JOB -- 부서번호가 3개, JOB이 3개면 총 9행 출력
    HAVING AVG(SAL) >= 2000 -- 위 9행 중 평균급여가 2000이 넘는 행만 출력
    ORDER BY DEPTNO, JOB; 
    

 

  • WHERE 절이 같이 존재하는 경우

    SELECT DEPTNO, JOB, AVG(SAL) FROM EMP
    WHERE SAL <= 3000 -- WHERE절이 group by, having보다 먼저 수행됨.
    GROUP BY DEPTNO, JOB 
    HAVING AVG(SAL) >= 2000 
    ORDER BY DEPTNO, JOB; 
    

     

'SQL' 카테고리의 다른 글

[Oracle SQL] 서브쿼리(subquery)  (0) 2019.05.20
[Oracle SQL] 조인(JOIN)  (0) 2019.05.17
[Oracle SQL] DECODE, CASE  (0) 2019.05.16
[Oracle SQL] 숫자함수, 날짜함수  (0) 2019.05.16
[Oracle SQL] 문자 함수  (0) 2019.05.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함