💻Programming/Oracle

[Oracle/오라클] 그룹함수

horang_dev 2021. 3. 19. 16:16

 그룹 함수 

 - 복수개의 행을 대상으로 연산

 - SUM, AVG, COUNT, MAX, MIN

 - 그룹함수와 일반컬럼이 SELECT 절에 사용되면 반드시 GROUP BY절이 SELECT 절 다음에 기술되어야 함.

 

  SELECT [ 컬럼명1,... ]

              SUM (컬럼명) |  AVG (컬럼명) |  COUNT (컬럼명 | * ) |  MAX (컬럼명) |  MIN (컬럼명) ,

   FROM 테이블명

[ WHERE 조건 ]

[ GROUP BY 컬럼명 [ , 컬럼명 , ... ] 

[ HAVING 조건 ]

[ ORDER BY 컬럼명 |  컬럼인덱스 [ [ ASC ] | [ DESC ] ,... ] ;

 

1. SUM (COL)

   - 자료를 그룹으로 묶고 그 그룹내의 컬럼에 대한 합계를 구함

   - SELECT 절에 일반 컬럼없이 SUM 함수만 사용되면 테이블 전체가 하나의 그룹으로 간주 ( GROUP BY 절 생략 )

 

ex) 회원테이블에서 회원들의 거주지별 마일리지 합계를 구하시오.

    SELECT SUBSTR(mem_add1,1,2) AS 거주지,
           SUM(mem_mileage) AS 마일리지합계
      FROM member
     GROUP BY SUBSTR(mem_add1,1,2);
          

-- 출력 결과 --

 


2. AVG (COL)

   - COL에 저장된 데이터의 평균값을 구하여 반환

 

ex) 사원테이블에서 직무별 평균급여를 소숫점 한자리까지 구하여 출력하시오.

     Alias는 직무명과 평균급여이다.

    SELECT B.job_title AS 직무명,
           ROUND(AVG(A.salary),1) AS 평균급여
      FROM employees A, jobs B
     WHERE A.job_id = B.job_id
     GROUP BY B.job_title;

-- 출력 결과 --

 


3. COUNT ( * | COL )

   - 그룹 내의 자료(행)의 수를 반환

   - ' * '나 컬럼명을 기술해도 동일 결과 반환

      단, 외부조인에 사용할 때 '*' 사용 할 수 없음. 주로 기본키 컬럼명 사용

 

ex) 사원테이블에서 부서별 사원 수를 조회하시오.

    SELECT department_id AS 부서코드, 
           COUNT(*) AS 사원수1,
           COUNT(emp_name) AS 사원수2
      FROM employees
     GROUP BY department_id
     ORDER BY 1;

-- 출력 결과 --

반응형