(SQL 문법) SQL 함수 (그룹 함수)

    728x90

    그룹함수

    그룹함수(MAX, MIN, AVG, SUM, COUNT)

    그룹함수
    
    -- 총 5개 그룹함수
    -- 최대값: max() , 최소값: min(), 평균: avg(), 총합: sum(), 갯수: count()
    select max(sal), min(sal), avg(sal), sum(sal), count(sal)
    FROM EMP;
    
    SELECT trunc(avg(sal),0) --10번부서
    FROM EMP
    where deptno = 10;  --2916
    SELECT trunc(avg(sal),0) --20번부서
    FROM EMP
    WHERE DEPTNO = 20;  --2175
    
    ------------ ****** 그룹함수5개는 Group by와 무관하게 그냥 쓸수 있다.
    SELECT trunc(avg(sal),0) --30번부서
    FROM EMP
    where deptno = 30;  --1566

    GROUP BY

    GROUP BY는 그룹함수를 사용하기 위함

    ------------ ****** Group by 컬럼1,컬럼2  --> select 컬럼1,컬럼2
    ---그룹 바이 했으면 셀렉트로 지정을 해줘야한다
    ------ORA-00979: not a GROUP BY expression
    ------00979. 00000 -  "not a     GROUP BY expression"
    ---- ename이 있으면 에러가 난다 ( Group by deptno만 사용하고 있다.)
    select ename, deptno, trunc(avg(sal),0)
    FROM EMP
    GROUP BY ename, deptno
    order by deptno asc;
    
    --- ORA-00937: not a single-group group function
    -- 00937. 00000 -  "not a single-group group function"
    SELECT sal, min(ENAME)
    from emp;
    
    
    select deptno,job, avg(sal)  --- trunc(avg(sal),0)
    FROM EMP
    GROUP BY deptno,job
    order by deptno asc;
    
    
    -- mgr 있으면 y 없으면 n : as mgr_yn
    select * from emp;
    
    SELECT MGR ,
          CASE NVL(MGR,0) WHEN 0 THEN 'n'
                          ELSE 'y' 
          END  MGR_YN
    from emp;

     

    SELECT 명령어 순서 (SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY 순)

    -- 명령어 순서 중요 --
    -- ************** WHERE 뒤에는 AVG 그룹함수 사용 불가
    SELECT DEPTNO, AVG(SAL)
    FROM EMP
    WHERE  
    GROUP BY DEPTNO
    HAVING AVG(SAL)>=2000 #HAVING으로 그룹함수 조건 사용가능
    ORDER BY
    ;

    활용예시

     -- 각 부서별       평균 급여    출력 ,  단 평균 급여는 2000 이상
    GROUP BY DEPTNO   SELECT  AVG(SAL)       AVG(SAL)>=2000
    
    SELECT  DEPTNO,AVG(SAL) 
    FROM EMP
    GROUP BY DEPTNO
    HAVING AVG(SAL)>=2000;

    'SQL' 카테고리의 다른 글

    (SQL 문법) 집합 연산  (0) 2022.01.05
    (SQL 문법) 서브 쿼리 (단일행, 다중행)  (0) 2022.01.05
    (SQL 문법) JOIN  (0) 2022.01.05
    (SQL 문법) SQL 함수 (단일행 함수)  (0) 2022.01.05
    (SQL 문법) SELECT문 기본  (0) 2022.01.05

    댓글