본문 바로가기
Database

오라클 집계 함수: COUNT, SUM, AVG

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스에서 데이터를 분석하고 요약하기 위해 집계 함수는 매우 유용한 도구입니다. 오라클(Oracle)에서는 데이터를 효율적으로 처리하기 위해 다양한 집계 함수를 제공합니다. 그중에서도 COUNT, SUM, AVG는 가장 자주 사용되는 기본적인 집계 함수입니다. 이 글에서는 각 함수의 특징과 사용법을 살펴보고, 실무에서 활용할 수 있는 구체적인 예제를 제시하겠습니다.


1. COUNT: 행 개수 계산

COUNT 함수는 데이터 집합에서 행의 개수를 계산합니다.

  • 특징
    • 특정 컬럼 값의 개수 또는 전체 행의 개수를 반환.
    • NULL 값을 제외하거나 포함하여 계산 가능.
  • 사용 예시
    • 전체 주문 건수, 특정 조건에 맞는 데이터 수를 파악할 때.
  • 예제위 예제는 주문 테이블에서 전체 주문 수, 유효한 주문 수, 특정 상태의 주문 수를 각각 계산합니다.
  • -- 전체 행 개수 계산 SELECT COUNT(*) AS total_count FROM orders; -- 특정 컬럼에서 NULL 제외 개수 계산 SELECT COUNT(order_date) AS valid_orders FROM orders; -- 특정 조건에 맞는 행 개수 계산 SELECT COUNT(*) AS shipped_orders FROM orders WHERE status = 'SHIPPED';

2. SUM: 합계 계산

SUM 함수는 숫자 데이터의 합계를 계산합니다.

  • 특징
    • NULL 값은 계산에서 제외.
    • 숫자 데이터 타입에만 적용 가능.
  • 사용 예시
    • 총 매출, 전체 수량, 특정 범위 내 금액 합계를 구할 때.
  • 예제이 예제에서는 SUM을 사용해 전체 매출, 특정 상태의 매출, 고객별 매출을 각각 계산합니다.
  • -- 전체 매출 합계 계산 SELECT SUM(amount) AS total_revenue FROM transactions; -- 특정 조건의 합계 계산 SELECT SUM(amount) AS completed_revenue FROM transactions WHERE status = 'COMPLETED'; -- 그룹별 합계 계산 SELECT customer_id, SUM(amount) AS customer_revenue FROM transactions GROUP BY customer_id;

3. AVG: 평균 계산

AVG 함수는 숫자 데이터의 평균값을 반환합니다.

  • 특징
    • NULL 값은 계산에서 제외.
    • 숫자 데이터 타입에만 적용 가능.
  • 사용 예시
    • 평균 매출, 평균 재고, 특정 조건의 평균 수치를 구할 때.
  • 예제이 예제에서는 AVG를 사용해 전체 평균 매출, 특정 조건의 평균 매출, 카테고리별 평균 가격을 계산합니다.
  • -- 전체 평균 매출 계산 SELECT AVG(amount) AS average_revenue FROM transactions; -- 특정 조건의 평균 계산 SELECT AVG(amount) AS avg_completed_revenue FROM transactions WHERE status = 'COMPLETED'; -- 그룹별 평균 계산 SELECT category_id, AVG(price) AS avg_price FROM products GROUP BY category_id;

4. 집계 함수의 실무 활용

집계 함수는 개별적으로 사용할 수도 있지만, 다른 SQL 기능과 조합하여 더욱 강력한 분석 도구로 활용할 수 있습니다.

(1) GROUP BY와 조합

GROUP BY 절을 사용하여 데이터를 그룹화하고 각 그룹에 대해 집계 함수를 적용할 수 있습니다.

-- 카테고리별 상품 수, 평균 가격, 총 재고량 계산
SELECT category_id, 
       COUNT(*) AS product_count, 
       AVG(price) AS avg_price, 
       SUM(stock) AS total_stock
FROM products
GROUP BY category_id;

(2) HAVING과 조합

HAVING 절을 사용해 집계 결과에 조건을 적용할 수 있습니다.

-- 평균 가격이 100 이상인 카테고리만 조회
SELECT category_id, AVG(price) AS avg_price
FROM products
GROUP BY category_id
HAVING AVG(price) >= 100;

(3) 서브쿼리와 조합

집계 함수를 서브쿼리와 결합해 더욱 복잡한 분석을 수행할 수 있습니다.

-- 전체 평균 매출보다 높은 고객 조회
SELECT customer_id, SUM(amount) AS total_revenue
FROM transactions
GROUP BY customer_id
HAVING SUM(amount) > (
    SELECT AVG(amount) 
    FROM transactions
);

5. COUNT, SUM, AVG를 활용한 통합 예제

아래는 다양한 집계 함수를 결합하여 사용하는 실전 예제입니다.

-- 거래 데이터를 분석하여 요약 통계 출력
SELECT 
    COUNT(*) AS total_transactions, -- 전체 거래 수
    SUM(amount) AS total_revenue, -- 전체 매출
    AVG(amount) AS average_revenue, -- 평균 매출
    COUNT(DISTINCT customer_id) AS unique_customers -- 고유 고객 수
FROM transactions
WHERE transaction_date BETWEEN TO_DATE('2024-01-01', 'YYYY-MM-DD') AND TO_DATE('2024-12-31', 'YYYY-MM-DD');

위 쿼리는 2024년 동안의 거래 데이터를 분석해 총 거래 수, 매출 합계, 평균 매출, 고유 고객 수를 반환합니다.


결론

COUNT, SUM, AVG는 오라클 SQL에서 데이터를 요약하고 분석하는 데 필수적인 함수입니다. 이 함수들을 적절히 활용하면 데이터의 패턴을 파악하고, 중요한 비즈니스 의사 결정을 지원할 수 있습니다. 위 예제를 참고하여 실무에서 다양한 데이터 분석에 적용해 보세요!

반응형