[ORACLE] 그룹 함수 (집계 함수)

privatekim·2024년 6월 14일
0

ORACLE

목록 보기
3/38
post-thumbnail

여러행 당 하나의 결과를 반환하는 함수를 그룹함수 또는 집계함수라고 한다.
집계 함수에는 일반적으로 다음과 같은 종류가 있다.

  • sum
  • avg
  • median(중앙값)
  • variance(분산)
  • stddev(표준편차)
  • max
  • min
  • count

집계 함수 특징

  • 그룹 함수 중 sum, avg, median, variance, stddev의 경우 인자 값으로 숫자만 입력할 수 있다. 나머지는 모든 타입의 데이터가 인자로 입력될 수 있다.

  • 일반적으로 집계 함수는 NULL값을 포함하지 않는다. 단, COUNT(*)의 경우 NULL을 포함한 결과를 반환한다.

  • 집계 함수는 중첩해서 사용할 수 없다.

count()

입력된 데이터(열)의 개수를 반환하는 함수이다. 이 때 *를 사용하면 NULL데이터의 개수도 포함하니 주의하자.

count() 예시

SELECT	
	count(*) -- null 포함
    count(commission_pct) -- null 제외
FROM	
	hr.employees

count()와 distinct의 활용

count안의 데이터에 distinct를 적용할 수 있다. 이 경우 입력된 데이터의 종류의 개수를 확인할 수 있다.

SELECT	
	count(*) -- null 포함
    count(commission_pct) -- null 제외    
    count(distinct department_id) -- null과 중복 제외
FROM	
	hr.employees

sum()

입력된 숫자 데이터(열)에 대해 총 합을 구하는 함수이다.

sum() 예시

SELECT	
	sum(salary)
FROM	
	hr.employees
WHERE 
    department_id =  5;

sum() 작동 방식

  1. 조회된 salary에 대해 한 줄(행)마다 데이터를 읽어온다.
  2. 읽어온 데이터를 0부터 더하며 모든 데이터를 읽어올 때 까지 반복한다.

sum() 활용 count

sum을 이용하면 다음과 같이 데이터를 체크하여 개수를 세는데 활용할 수 있다.

SELECT
    count(hire_date) as "TOTAL",
    sum(case when to_char(hire_date, 'yyyy') = '2001' then 1 else 0 end) as "2001년"
FROM
    hr.employees;

avg()

입력된 숫자 데이터에 대해 평균을 구하는 함수이다.

avg() 예시

SELECT	
	round(avg(commission_pct),3) -- null은 제외된 데이터의 평균
FROM	
	hr.employees;

avg() 작동 방식

  1. 조회된 commission_pct에 대해 한 줄(행)마다 데이터를 읽어온다. 이때 null은 제외한다.
  2. 읽어온 모든 데이터의 평균을 반환한다.

ex) 입력된 데이터가 1,null,3 일 경우...
반환되는 데이터는 1+3/2 이다.

avg() 활용 nvl

위의 코드는 null값이 제외되어 있는데 nvl을 이용하면 null값을 포함한 평균 계산을 진행할 수 있다.

SELECT	
	round(avg(nvl(commission_pct,0)),3) -- null을 포함한 데이터의 평균
FROM	
	hr.employees;

위 코드는 null 데이터를 0으로 치환한 결과를 반환한다.

ex) 입력된 데이터가 1,null,3 일 경우...
반환되는 데이터는 1+0+3/3 이다.

이때 데이터를 0이 아닌 다른 값으로 변경할 수 있다. 보통 중앙값median이나 평균avg을 넣기도 한다.

median

입력된 숫자 데이터들의 중앙 값 즉 오름차 순으로 나열했을 때 중간에 위치한 데이터를 반환하는 함수이다.

median() 예시

SELECT	
	avg(salary), median(salary)
FROM	
	hr.employees;

이상치 데이터가 있을 경우 평균에 문제가 있을 수 있기 때문에 사용되기도 한다.

variance

입력된 숫자 데이터들의 분산 값을 구하는 함수이다.

분산 : 평균을 기준으로 얼마나 떨어져 있는가 확인. (편차 제곱의 합의 평균)
그렇기에 평균과의 단위 차이가 존재하여 평균과 비교할 때는 표준편차를 사용한다.

variance() 예시

SELECT	
	avg(salary),
    variance(salary)
FROM	
	hr.employees;

stddev

입력된 숫자 데이터들의 표준편차를 구하는 함수이다.

stddev() 예시

SELECT	
	avg(salary),
    variance(salary),
    stddev(salary)
FROM	
	hr.employees;

max, min

입력된 숫자 데이터들의 최댓 값, 최솟 값을 구하는 함수이다.
(최댓 값) - (최솟 값)을 통해 입력된 데이터의 범위를 구할 수 있다.

max(), min() 예시

SELECT	
	max(salary),
    min(salary),
    max(salary)-min(salary)
FROM	
	hr.employees;

0개의 댓글