본문 바로가기

DEVELOPMENT/SQL

[SQL] 집계함수

집계함수

 

집계란 집합으로 부터 하나의 값을 계산하는 것이다.

SQL은 집합을 다루는 집계함수를 제공한다. 대표적인 집계함수는 COUNT, SUM, AVG, MIN, MAX 가 있다. 

일반적인 함수는 인수로 하나의 값을 지정하는데 비해 집계함수는 인수로 집합을 지정한다. 이 때문에 집합함수라고도 불린다. 즉, 집합을 특정 방법으로 계산하여 그 결과를 반환한다.

집계함수는 집합 안에 NULL 값이 있을 경우 이를 제외하고 처리한다.

 

 

COUNT로 행 개수 구하기

 

COUNT 집계함수로 행 개수를 구할 수 있다.

-- 형식
COUNT(집합)

-- 예시
SELECT COUNT(*) FROM sample1; -- 5
SELECT COUNT(*) FROM sample1 WHERE name = 'A'; -- 2

SELECT 구는 WHERE 구보다 나중에 내부적으로 처리된다. 따라서 WHERE 구로 조건을 지정하면 테이블 전체가 아닌, 검색된 행이 COUNT로 넘겨진다. 즉, WHERE 구의 조건에 맞는 행의 개수를 구할 수 있다. 

 

 

DISTINCT로 중복 제거

 

집합을 다룰 때, 경우에 따라서는 집합 안에 중복된 값이 있는지 여부가 문제될 때도 있다. 데이터가 서로 중복되지 않는 경우에는 '유일한 값을 가진다'라든가 '값이 중복되지 않는다'라는 표현을 자주 한다.

SQL의 SELECT 명령은 이러한 중복된 값을 제거하는 함수를 제공한다. 이때 사용하는 키워드가 DISTINCT 이다.

-- DISTINCT로 중복 제거하기
SELECT DISTINCT name FROM sample1;

-- 중복을 제거한 뒤 개수 구하기
SELECT COUNT(DISTINCT name) FROM sample1;

 

 

SUM으로 합계 구하기

 

SUM 집계함수를 사용해 집합의 합계를 구할 수 있다.

-- 형식
SUM(집합)

-- 예시
SELECT SUM(quantity) FROM sample1;

 

 

AVG로 평균내기

 

AVG라는 집계함수를 통해 평균값을 간단하게 구할 수 있다. AVG 집계함수에 주어지는 집합은 SUM과 동일하게 수치형만 가능하다.

-- 형식
AVG(집합)

-- 예시
SELECT AVG(quantity) FROM sample1;

 

 

MIN, MAX로 최솟값, 최댓값 구하기

 

MIN 집계함수, MAX 집계함수를 사용해 집합에서 최솟값과 최댓값을 구할 수 있다. 이들 함수는 문자열형과 날짜시간형에도 사용할 수 있다. 다만 NULL 값을 무시하는 기본규칙은 다른 집계함수와 같다.

-- 형식
MIN(집합)
MAX(집합)

-- 예시
SELECT MIN(quantity), MAX(quantity) FROM sample1;

 

 

 

 

 

'DEVELOPMENT > SQL' 카테고리의 다른 글

[SQL] 서브쿼리  (0) 2023.05.30
[SQL] GROUP BY  (0) 2023.05.30
[SQL] CASE 문  (0) 2023.05.30
[SQL] 날짜 연산  (0) 2023.05.30
[SQL] 문자열 연산  (0) 2023.05.30