[DB/오라클] 내장함수_집합함수 종류와 기능
오라클에서 지원하는 함수를 내장 함수라 한다.
내장 함수의 종류는 사용하는 데이터형에 따라 문자 함수, 숫자 함수, 날짜 함수 등으로 나뉜다.
오늘 다뤄보려고 하는 함수는 집합 함수이다.
집합이라는 단어에서 알 수 있듯이 여러 컬럼을 가지고 연산하는 것이 집합 함수이다.
지금부터 자세히 알아보도록 하자.
1. 집합 함수
집합함수는 컬럼의 합, 컬럼의 평균, 컬럼의 개수 등과 같이 컬럼에 대한 통계나 분석이 필요할 때 사용 가능하다.
주로 SELECT문 에서 사용되며 SELECT 집합함수(컬럼명) FROM (테이블명) 의 형태로 사용된다.
2. 집합 함수 사용 시 주의점
집합 함수 사용 시에는 단일행 함수 또는 단일컬럼과 동시에 사용이 불가능하다.
SELECT 이름컬럼, MAX(나이컬럼)
컬럼 자체인 이름컬럼과 집합함수 MAX를 함께 사용하면 실행이 불가하다.
이럴 경우 GROUP BY를 사용해서 그룹으로 묶어주어야 한다.
단, RNK, DENSE_RANK 두가지 집합 함수는 단일컬럼 또는 단일행 함수와 함께 사용 가능하다.
2. 집합 함수의 종류
* COUNT
저장된 행 row 의 개수를 반환한다. 단 NULL 값은 제외하니 이점은 꼭 주의하자 (NULL은 카운트하지 않음)
카운트는 COUNT(*) 의 형태로 가장 많이 쓰인다. 테이블의 행 개수를 알고 싶을 때 SELECT COUNT(*) FROM 테이블명 형태를 기억하자!
만약 조건을 주고 조건에 해당하는 컬럼의 수만 가져오고 싶을 때는 WHERE 절을 이용하면 된다.
* MAX
해당 컬럼의 최대값을 반환한다. 1 부터 10까지의 데이터가 저장되어 있는 컬럼에서 MAX를 사용한다면 10이 반환된다.
* MIN
해당 컬럼의 최소값을 반환한다. 1 부터 10까지의 데이터가 저장되어 있는 컬럼에서 MIN를 사용한다면 1이 반환된다.
* SUM
해당 컬럼의 합계를 반환한다. 1 부터 10까지의 데이터가 저장되어 있는 컬럼에서 SUM을 사용하면 55가 반환된다.
* AVG
해당 컬럼의 평균를 반환한다. 1 부터 10까지의 데이터가 저장되어 있는 컬럼에서 AVG을 사용하면 5.5가 반환된다.
* RANK() OVER(ORDER BY ASC|DESC)
해당 컬럼의 순위를 반환한다. 정렬(ORDER BY) 값으로 ASC를 주면 오름차순, DESC를 주면 내림차순이다.
만약 100점 1인 , 99점 1인, 98점 3인, 97점 1인 으로 98점 동점 3명이 있을 경우
1등 2등 3등(4,5등 건너뜀) 6등 순으로 랭킹을 매긴다. 동점이 있을 경우 인원수만큼 제하고 다음 순위를 준다.
* DENSE_RANK() OVER(ORDER BY ASC|DESC)
해당 컬럼의 순위를 반환한다. 정렬(ORDER BY) 값으로 ASC를 주면 오름차순, DESC를 주면 내림차순이다.
만약 100점 1인 , 99점 1인, 98점 3인, 97점 1인 으로 98점 동점 3명이 있을 경우
1등 2등 3등 4등 순으로 랭킹을 매긴다. 동점을 있어도 무시하고 바로 다음 랭킹을 매긴다.
이상으로 집합함수에 대해 알아보았다.