본문 바로가기
Oracle SQL

집계 함수

by Nowkeeh Ahc

 집계 함수는 그룹화된 여러 개의 행 또는 테이블 전체 행에 대해 함수가 적용되어 하나의 결과를 반환한다. , 하나의 그룹에 하나의 결과가 반환되는데, 특정 그룹으로 묶어 데이터를 집계할 때는 GROUP BY 절을 사용한다. GROUP BY 절을 사용하지 않은 경우에는 전체 데이터가 하나의 그룹으로 간주된다.

함수 기능
COUNT(컬럼명) 테이블의 행의 수를 반환한다.
MAX(컬럼명) 컬럼의 최대값을 반환한다.
MIN(컬럼명) 컬럼의 최소값을 반환한다.
SUM(컬럼명) 컬럼의 합계를 반환한다.
AVG(컬럼명) 컬럼의 평균을 반환한다.
RANK() 그룹에서 값의 순위를 계산한다.
DENSE_RANK()

 

테이블의 행의 수 계산

 COUNT 함수는 지정한 조건을 만족하는 행의 개수를 반환하는 함수이다. COUNT 함수에 특정 컬럼을 지정하면 널값을 가지고 있는 행을 제외한 행의 개수를 반환한다.

ex. COUNT 함수를 이용하여 고객 테이블의 고객ID 컬럼과 고객주소 컬럼의 행의 개수를 출력하여라.

SELECT COUNT(고객ID), COUNT(고객주소)
FROM 고객;

 

최대값과 최소값

 MAX 함수와 MIN 함수는 지정 컬럼의 최대값과 최소값을 반환한다.

SELECT MAX(상품정가) "최고가", MIN(상품정가) "최저가"
FROM 상품;

 

합계와 평균

SUM 함수와 AVG 함수는 각각 합계와 평균을 반환한다.

ex. 구매 테이블에서 고객ID‘C0001’인 고객의 총구매가격의 합계와 총구매가격의 평균을 구하여라.

SELECT SUM(총구매가격) "총구매가격 합계", AVG(총구매가격) "총구매가격 평균"
FROM 구매
WHERE 고객ID='C0001';

 

그룹 내 순위 계산

 RANK 함수와 DENSE_RANK 함수는 지정한 그룹 내 인자 값의 순위를 계산한다. RANK 함수와 DENSE_RANK 함수의 차이점은 같은 순위를 가지는 데이터가 존재하는 경우 다음 순위를 처리하는 방식에 있다. 가령, 1위의 동일한 순위 데이터가 3건일 경우, RANK 함수는 다음 순위를 4위로 지정하고, DENSE_RANK 함수는 다음 순위를 2위로 지정한다. RANK 함수와 DENSE_RANK 함수의 기본 문법은 다음과 같다.

RANK(expr) WHTHIN GROUP(ORDER BY 컬럼명 DESC | ASC)
DENSE_RANK(expr) WHTHIN GROUP(ORDER BY 컬럼명 DESC | ASC)

 WITHIN GROUP 절은 순위를 계산하고자 하는 집합을 지정하고 ORDER BY 절 뒤에는 오름차순 또는 내림차순을 지정한다. RANK(expr)의 expr은 expression을 뜻한다. 즉, 표현식을 의미한다.

ex. 구매 테이블에서 총구매가격이 300만원일 경우의 순위는 어떻게 되는지 RANK DENSE_RANK 함수로 각각 나타내보자.

SELECT RANK(3000000) WITHIN GROUP (ORDER BY 총구매가격 DESC) "RANK",
	DENSE_RANK(3000000) WITHIN GROUP (ORDER BY 총구매가격 DESC) "DENSE_RANK"
FROM 구매;

 


This post was written based on what I read and studied the book below.

http://www.yes24.com/Product/Goods/99002458

댓글