데이터베이스에서 데이터를 분석하고 요약하기 위해 집계 함수는 매우 유용한 도구입니다. 오라클(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에서 데이터를 요약하고 분석하는 데 필수적인 함수입니다. 이 함수들을 적절히 활용하면 데이터의 패턴을 파악하고, 중요한 비즈니스 의사 결정을 지원할 수 있습니다. 위 예제를 참고하여 실무에서 다양한 데이터 분석에 적용해 보세요!
'Database' 카테고리의 다른 글
오라클 DB에서 SELF JOIN과 CROSS JOIN 이해하기 (0) | 2024.12.03 |
---|---|
오라클 DB에서 JOIN 개념 이해하기: INNER JOIN과 OUTER JOIN (0) | 2024.12.03 |
오라클 GROUP BY와 HAVING (0) | 2024.12.03 |
오라클 CASE와 DECODE로 조건 처리하기 (0) | 2024.12.03 |
오라클 날짜 함수: SYSDATE, ADD_MONTHS, MONTHS_BETWEEN (0) | 2024.12.03 |