본문 바로가기

배우기/복습노트[oracle sql]

[복습] SQL | Oracle 엑셀과 비슷한 숫자 함수(count, sum, avg, min/max)

728x90
반응형

여러 숫자함수 중 엑셀과 비슷한 숫자 함수가 있다.

먼저 count는 행의 수를 세어준다.

count(대상)

 

그런데 count는 Null을 세어주지는 않는다.

comm은 null이 포함되어 있으므로 14건으로 출력되지 않는다.

어떤 테이블도 전체 컬럼이 null인 컬럼은 데이터로서의 의미가 없다.

 

위의 상황을 살펴보면 가장 안전하게 테이블의 전체 행의 수를 세는 방법은 * 를 사용하는 것이다.

그러나 그 단점으로는 모든 컬럼을 엑세스 해야하므로 성능이 좋지 않다는 것이다.

 

위의 empno처럼 절대 null이 들어가지 않는 단 하나의  컬럼을 찾는 방법이 있을까?

이를 확인할 수 있는 방법이 있다.

desc emp; 하면 Nullable에 NOT NULL을 찾아서 사용하면 된다.

 

 

sum 함수는 간단하다.

총 합을 구해주는 것으로 숫자 컬럼만 입력 가능하다.

select sum(sal)

  from emp; 

하면 될 것이다.

 

 

avg는 평균을 구하며 숫자 컬럼만 입력 가능하다.

주의할 점으로, 평균은 null을 포함하지 않는다. 즉 null을 제외한 대상의 평균을 리턴한다.

위의 첫 번째 avg(comm)에서는 null을 포함하지 않은 평균을 리턴한다.

그럼 원하는 바로 출력이 되지 않으므로 두 번째 방법처럼 수행할 수 있다.

그러나 이 방법은 매우 번거로우므로 함수 nvl을 사용하여 null값을 포함한 전체 평균을 구하면 된다.

★세 번째 방법을 기억해 두어야 한다.

 

 

본 게시글에서의 마지막 함수인 min/max 함수가 있다. 

이 함수는 날짜, 숫자, 문자 모두 가능하다.

select min(ename), max(ename),
       min(sal), max(sal),
       min(hiredate), max(hiredate)
  from emp;

와 같이 간단히 테스트를 해봐도 좋을 것이다.

 

다음 게시글은 숫자함수 중 단일행 함수를 알아본다.

728x90
반응형