데이터베이스/Oracle SQL

오라클 SQL과 PL/SQL ( 복수행 함수(그룹 함수) )

동띠기 2021. 7. 28. 22:05

1. GROUP 함수의 종류

SQL 복수행 함수는 단일행 함수와 달리 한꺼번에 여러건의 데이터가 함수로 입력됩니다. 하지만 사용방법은 일반함수와 비슷합니다.
모든 그룹 함수에서 중요한 부분은 NULL 값의 포함여부입니다.
거의 대부분 그룹 함수는 함수에 *를 사용하면 NULL을 포함하고 컬럼이름을 쓰면 해당 컬럼에 데이터가 있는 경우 즉 NULL을 제외하고 작업을 해서 출력하게 됩니다.
주로 사용하는 그룹 함수들을 아래와 같습니다.

 

1) COUNT() 함수 / 입력되는 데이터의 총 건수를 반환 합니다.

SELECT COUNT(*), COUNT(COMM) FROM EMP; 

COUNT(*)는 NULL 포함
COUNT(COMM) 는 NULL 미포함

 

2) SUM() 함수 / 입력된 데이터들의 합계를 구하는 함수 입니다.

SELECT ENAME, COMM FROM EMP;


SELECT COUNT(COMM), SUM(COMM) FROM EMP;

 

3) AVG() 함수 / 입력된 값들의 평균 값을 구해주는 함수 입니다.


SELECT COUNT(COMM), SUM(COMM), AVG(COMM) FROM EMP;

 

** AVG 주의사항
위의 사진을 보면 총 인원이 12명이고 보너스를 받은 사람이 4명입니다.
만약 전체 직원의 평균 보너스를 구해야 한다면 당연히 총금액 / 전체인원을 해야 정확한 답이 나오는데
AVG함수는 특정 컬럼을 지정 할 경우 해당 컬럼에 NULL이 있다면 자동으로 NULL값은 제외하기 때문에 의도하지 않은 오류로 답이나오게 됩니다.


SELECT COUNT(*), SUM(COMM), AVG(NVL(COMM, 0)) FROM EMP;

 

4) MAX(), MIN() 함수 / 최대/최소값 추출


SELECT MAX(SAL), MIN(SAL) FROM EMP;

MAX/MIN 함수는 시간이 오래 걸리는 함수 중 한가지이며 그렇기에 사용할 때 아주 주의해야 합니다.
MAX, MIN 대신 인덱스를 활용하는 방법을 추천합니다.
날짜의 경우는 최근 날짜가 크고 이전 날짜가 작기때문에 아래와 같이 나옵니다.


SELECT MAX(HIREDATE) "MAX", MIN(HIREDATE) "MIN" FROM EMP;

 

5) STDDEV() 함수 , VARIANCE() 함수
STDDEV() : 표준편차
VARIANCE() : 분산을 구하는 함수


SELECT STDDEV(SAL), VARIANCE(SAL) FROM EMP;  

728x90