본문 바로가기
DB

오라클 : 집계함수 COUNT, SUM, AVG, MAX, MIN

by 스노위13 2022. 8. 19.

집계함수 : 대상 데이터에서 특정 그룹으로 묶어 그 그룹에 대해 총합, 평균, 최댓값, 최솟값 등을 구하는 함수

1. COUNT : row의 건수 집계, 조건을 줘서 각 조건에 맞는 행의 갯수를 알아낼 때 많이 쓰인다. 페이지를 만들 때도 필요하다.

SELECT COUNT(*)                       -- null 포함한 전체 row의 갯수
       ,COUNT(ALL column명)            -- defalut ALL = null을 포함하지 않는다.
       ,COUNT(column명)                -- 위와 동일하다
       ,COUNT(distinct column) -- 중복 제거
FROM 테이블명 ;


위의 규칙에 따라 employees 테이블을 조회해 보았다. 

SELECT COUNT(*)                        
       ,COUNT(ALL department_id)       
       ,COUNT(department_id)           
       ,COUNT(distinct department_id ) 
FROM employees;


위의 결과는 아래와 같다. 

COUNT(ALL column명)와 COUNT(column명)은 null이 제거되어 106개이다. 
그리고 department_id의 중복을 제거한 갯수는 11개임을 알 수 있다.

2. SUM : row의 값을 모두 합친다.

SELECT sum(column명)
FROM 테이블명;


sum을 가지고 직원 테이블의 월급을 모두 더한 값을 알아내려고 할 때 쿼리문과 그 결과는 아래와 같다.

SELECT sum(salary)
FROM employees;

3. AVG : row의 값을 집계하여 평균을 낸다.

SELECT AVG(column명)
FROM 테이블명;


AVG를 이용하여 member테이블의 평균 마일리지 값을 알아내려면 아래와 같이 쿼리를 짜면 된다.

SELECT AVG(mem_mileage)
       ,ROUND(AVG(mem_mileage),2)
FROM member;

 

위의 쿼리문을 실행하면 아래와 같다. 두 번째는 ROUND을 사용해서 소수점 2이하는 제거하였다.

4. MAX, MIN : row의 전체 값에서 최대값이나 최소값을 구한다.

SELECT min(column명)
       ,max(column명) 
FROM 테이블명;


직원 테이블에서 가장 높은 월급과 가장 낮은 월급을 구하려고 할 때 쿼리문과 그 결과는 아래와 같다.

SELECT min(salary)
       ,max(salary) 
FROM employees;

이러한 집계함수를 이용하여 개발 부서의 직원 수와 평균, 최소, 최대, 급여를 출력해보자! 

SELECT count(employee_id)       as 직원수
       ,ROUND(avg(salary),2)    as 평균급여
       ,min(salary)             as 최소급여
       ,max(salary)             as 최대급여
FROM employees
where department_id = '개발팀';

위의 쿼리문을 실행하면 아래와 같이 출력된다.

댓글