
데이터 분석은 비즈니스 의사결정의 핵심이다. 특히 쇼핑몰 등의 서비스 운영에서는 주문 현황, 매출, 고객 행동 등을 파악하는 것이 중요하다. SQL의 집계 함수(Aggregate Functions)는 이처럼 방대한 데이터를 요약이서하고 분석을 도와준다.
- Aggregate Functions: 어디선가 많이 들어본 반가운 Aggregate이다. 검색을 해보니 “집계 함수는 일반적으로 여러 행의 값 집합에 대해 계산을 수행하고 단일 요약 값을 반환합니다. 이러한 함수는 데이터베이스 쿼리, 특히 GROUP BY 절에서 데이터로부터 인사이트를 도출하는 데 일반적으로 사용됩니다.”라고 나온다.
order_stat table schema
CREATE TABLE order_stat (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_name VARCHAR(50),
category VARCHAR(50),
product_name VARCHAR(100),
price INT,
quantity INT,
order_date DATE
);
order_stat 데이터

NULL 값과 집계 함수
데이터는 종종 누락된 값(NULL)이 포함될 수 있다. 집계 함수는 NULL 값을 다루는 방식에 따라 결과가 달라지므로, 이 차이를 이해하는 것이 중요하다
- COUNT(*): 테이블의 모든 행 수를 반환한다. NULL 값의 존재 여부와 관계없이 물리적인 행의 개수를 센다
- COUNT(컬럼명): 지정된 컬럼에서 NULL이 아닌 값의 개수만 센다
SELECT
COUNT(*) AS `전체 주문 건수`, -- 결과: 11 (NULL 포함)
COUNT(category) AS `카테고리 등록 건수` -- 결과: 10 (NULL 제외)
FROM
order_stat;
주요 집계 함수
총 주문 건수 파악
- COUNT(*): 전체 주문 건수를 파악하는 데 사용된다
SELECT COUNT(*) FROM order_stat; -- 총 11건의 주문
합계와 평균 계산
- SUM(expression): 지정된 표현식의 합계를 계산한다
- AVG(expression): 지정된 표현식의 평균을 계산한다
- 참고: SUM()과 AVG()는 계산 과정에서 NULL 값을 자동으로 제외한다
총 매출액 및 평균 주문 금액
SELECT
SUM(price * quantity) AS `총 매출액`, -- 개별 상품 가격 * 수량의 총합
AVG(price * quantity) AS `평균 주문 금액` -- 개별 상품 가격 * 수량의 평균
FROM
order_stat;
총 판매 수량 및 주문당 평균 수량
SELECT
SUM(quantity) AS `총 판매 수량`, -- 판매된 모든 상품 수량의 합
AVG(quantity) AS `주문당 평균 수량` -- 주문당 평균 구매 수량
FROM
order_stat;
최대 / 최소값 찾기
- MAX(expression): 지정된 표현식의 최댓값을 반환한다
- MIN(expression): 지정된 표현식의 최솟값을 반환한다
SELECT
MAX(price) AS `최고가`, -- 판매된 상품 중 가장 비싼 단일 상품 가격
MIN(price) AS `최저가` -- 판매된 상품 중 가장 저렴한 단일 상품 가격
FROM
order_stat;
최초 주문일 및 최근 주문일
SELECT
MIN(order_date) AS `최초 주문일`, -- 가장 오래된 주문 날짜
MAX(order_date) AS `최근 주문일` -- 가장 최근 주문 날짜
FROM
order_stat;
고유 고객 수 파악
- DISTINCT: 중복된 값을 제외하고 고유한 값의 개수만 셀 때 사용한다. COUNT() 함수와 함께 사용된다
총 주문 건수 대비 순수 고객 수 파악
SELECT
COUNT(customer_name) AS `총 주문 건수`, -- 고객 이름 중복 포함 (총 11건)
COUNT(DISTINCT customer_name) AS `순수 고객 수` -- 고객 이름 중복 제외 (총 5명)
FROM
order_stat;
SQL 쿼리를 통해 ‘총 주문 건수’는 11건이지만, 실제 구매한 ‘순수 고객 수’는 5명이라는 것을 정확히 알 수 있다. 이는 고객별 재구매율 등을 분석하는 데 중요한 기초 자료가 된다
출처 – 김영한 님의 강의 김영한의 실전 데이터베이스 입문 – 모든 IT인을 위한 SQL 첫걸음(SQL부터 차근차근)