본문 바로가기
오라클

오라클 - 그룹 함수 정리

by onggury 2023. 2. 8.

 

 

지난번엔 다양한 단일 함수에대해 정리해 보았습니다.

 

 

이번글은 그룹 함수에 대해 정리해보고자 합니다.

 

 

- SUM

- COUNT

- MAX

- MIN

- AVG

 

 

 

해당 글에서는 emp 테이블을 사용합니다.

 

 

 

 


 

 

1. SUM

 

 

SUM  함수는 데이터의 합을 구하는 함수입니다.

 

SELECT sum(sal)
FROM emp;

 

 

 

또한 지난번에 사원의 연봉을 구할 때, comm 추가수당에 null 값으로 인해 NVL 함수를 안쓰면 추가수당이 있는 사원의 값만 나오게 되었습니다.

 

그러나 그것은 단일 함수였습니다. 즉, 각 행에 대하여 연산을 진행했던 것이죠.

 

sum은 그룹 함수이기 때문에 해당 컬럼에 null값이 있어도 연산 결과가 나옵니다.

 

SELECT sum(comm)
FROM emp;

 

 

 

그리고 sum 함수에도 DISTINCT를 적용할 수 있습니다.

 

SELECT sum(DISTINCT sal), sum(ALL sal), sum(sal)
FROM emp;

 

DISTINCT는 중복값은 제외시키죠. 급여가 같은 사원이 좀 있었나봅니다. 결과가 다르네요.

 

 

그런데, sum 함수를 쓰면서 중복값을 제외하고 연산하는 경우가 있을까 싶네요.

뭐, 아무튼 이런것도 있다 정도로만 보시면 될 것 같습니다.

 

 

 


 

 

 

2. COUNT

 

 

 

count 함수는 데이터의 개수를 출력하는 데 사용하는 함수입니다.

 

SELECT count(sal), count(comm), count(*)
FROM emp;

 

각 컬럼의 데이터 갯수가 잘 나왔네요. comm은 세일즈맨 사원에게만 있었죠. 그리고 count(*)은 모든 행의 갯수를 뜻하죠.

 

 

 

 


 

 

 

3. MAX, MIN

 

 

입력 데이터 중 최대, 최솟값을 구하는 함수 입니다.

 

SELECT max(sal), min(sal)
FROM emp;

 

 

 

이렇게도 사용할 수 있겟죠.

 

SELECT max(sal), min(sal)
FROM emp
WHERE deptno = 20;

 

 

부서 번호가 20인 사원들 중, 최고 급여와 최소 급여를 출력해주는 쿼리입니다.

 

 

 

 

 

또한 날짜 데이터에도 적용이 가능합니다.

 

날짜 데이터가 클 수록 최근이란 뜻입니다.

SELECT max(hiredate), min(hiredate)
FROM emp
WHERE deptno = 20;

 

 

 

 


 

 

 

4. AVG

 

 

 

AVG 함수는 입력 데이터의 평균 값을 구하는 함수 입니다.

 

SELECT avg(sal), avg(comm), avg(NVL(comm, 0))
FROM emp;

 

 

어라? 같은 평균 구하는 함수를 썼는데,

comm 컬럼에 대해서는 두 방식의 결과가 다르네요.

 

 

이유는 null 값 때문입니다.

 

 

즉, count(*) 를 제외한 나머지 모든 그룹 함수는 null 값을 제외한 연산을 수행합니다.

그래서 avg(comm)은 4명의 데이터 값만 조회해서 덧샘을 한 후 4로 나누어 평균을 냈죠.

avg(NVL(comm, 0)) 은 null 값을 모두 0으로 계산해서 총 14명의 값을 연산 후 14로 나누게 됩니다.

 

 

 

 

여기까지 그룹 함수에 대한 정리 글이였습니다.