DB
오라클 : 집계함수 COUNT, SUM, AVG, MAX, MIN
스노위13
2022. 8. 19. 14:04
집계함수 : 대상 데이터에서 특정 그룹으로 묶어 그 그룹에 대해 총합, 평균, 최댓값, 최솟값 등을 구하는 함수
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 = '개발팀';
위의 쿼리문을 실행하면 아래와 같이 출력된다.
