본문 바로가기
Database/엑셀로 배우는 SQL 실무 - 입문

[SQL] 엑셀로 배우는 SQL - 집계함수 (MIN, MAX, AVG, SUM, COUNT)

by 따라쟁이개발자 2023. 1. 5.

엑셀에서 표를 다루다 보면, 필터 외에 함수를 사용해서 아래와 같은 결과들을 내야 하는 경우가 종종 있습니다.

- 최소, 최대, 평균, 합계, 개수

 

위 값들을 추출하기 위해서 보통 엑셀 함수를 사용하는데요

MIN, MAX, AVERAGE, SUM, COUNT 함수로 위 값들을 표현할 수 있습니다.

 

SQL에서도 SELECT절에서 집계함수를 이용해 동일한 결과를 낼 수 있는데요.

함께 살펴보겠습니다.

 

 

집계 함수

집계 함수란, 지정된 범위 내에서 전체 행을 두고 계산을 할 때 사용되는 함수를 말합니다.

주로 쓰이는 집계 함수는 아래 다섯 가지입니다.

일반적으로 그룹함수 등을 통해 별도 범위가 지정되지 않은 이상 '범위'란 전체 행을 의미하게 됩니다.

그리고 위 집계함수는 조회할 column들을 명시해두는 영역인 SELECT절에서 주로 사용됩니다.

 

엑셀로 먼저 살펴보기

아래와 같은 엑셀 표가 있다고 했을 때

가격, 재고 항목에 대해 각각의 함수를 적용해본 결과입니다.

 

SQL로 살펴보기

엑셀 예시와 동일하게 아래와 같은 Table 이 있다고 가정하고 집계함수를 적용해 볼게요.

집계함수는 보통 SELECT절에서 사용되고, 괄호 안에 어떤 column에 대한 집계를 낼 것인지 명시합니다.

 

최소와 최대 (MIN, MAX)

최소와 최대는 각각 MIN, MAX 함수를 사용하여 계산합니다.

괄호 안에는 계산할 column 명을 명시해 줍니다.

SELECT MIN(price), MIN(stock)
FROM beverage_stock;

 

SELECT MAX(price), MAX(stock)
FROM beverage_stock;

 

 

평균과 합계 (AVG, SUM)

평균과 합계는 각각 AVG, SUM 함수를 사용하여 계산합니다.

이 두 함수도 위와 동일하게 괄호 안에 계산할 column 명을 명시해줘야 합니다.

SELECT AVG(price), AVG(stock)
FROM beverage_stock;

 

SELECT SUM(price), SUM(stock)
FROM beverage_stock;

 

 

개수 (COUNT)

개수는 COUNT 함수를 사용하여 계산합니다.

COUNT의 경우는 column명을 직접 명시할 수도, 모든 column을 나타내는 *(Asterisk)를 명시할 수도 있습니다.

행의 개수는 어느 항목에서 측정하던 보통 같을 테니까요!

SELECT COUNT(price), COUNT(stock), COUNT(*)
FROM beverage_stock;

 

COUNT 사용 시 주의사항

COUNT는 다른 집계 함수와 다르게 괄호 안에 * 를 사용할 수 있다고 말씀드렸는데요!

왜냐하면, COUNT의 경우 행 개수를 출력하는 함수로 보통은 어느 항목에서 측정하던 행 개수가 같기 때문입니다.

 

그런데! 예외 경우도 있습니다.

만약 자몽 주스의 재고가 아직 정해지지 않아 NULL값인 상태면 COUNT 출력 결과는 어떻게 될까요?

 

자몽 주스 재고가 NULL인 상태에서 위와 동일한 쿼리를 수행한 결과입니다.

놀랍게도 stock의 행 개수가 2라고 나옵니다. 왜일까요?

 

앞서 다뤘던 NULL 게시물에서 정답을 찾을 수 있습니다.

'NULL이 포함된 행은 집계에서 제외된다'라는 NULL의 특징 때문입니다.

 

집계함수는 NULL인 행을 무시하고 계산됩니다.

따라서, 재고가 NULL인 자몽주스는 COUNT 계산에서 제외되어 COUNT(stock) 결과가 2가 나오게 된 것이죠

 

이런 경우들 때문에 저는 특별한 경우가 아니라면 가급적 COUNT 사용 시  *(Asterisk)를 사용하시라고 권장드립니다.

 

 

정리

이번 장에선 SELECT 절에서 주로 사용되는 집계함수에 대해 알아봤습니다.

 

COUNT는 그중에서도 특히 자주 사용되는 함수이니 꼭 알아두시면 좋을 것 같아요

COUNT 사용 시 주의사항도 함께요!

 

이젠 어느 정도 간단한 데이터 조회 방법들은 정리가 된 것 같은데요! 

 

앞으로는 데이터 출력 시 도움이 되는 중복제거와 정렬 방법에 대해 알아보겠습니다

열심히 정리해 볼게요 🙂

 

 

[ 참고 ]

 MySQL로 배우는 데이터베이스 개론과 실습

 SQL 개발자 이론서 + 기출문제

댓글