IT이야기
SQL로 특정 조건 데이터 효율적으로 추출하기
지파지파
2025. 6. 1. 09:00
반응형
데이터베이스에서 원하는 조건에 맞는 데이터만 골라내는 것은 데이터 분석의 첫 번째 단계입니다. 오늘은 실무에서 자주 사용되는 SQL 필터링 기법들을 살펴보겠습니다.
기본 필터링: WHERE 절 활용
가장 기본적인 데이터 필터링은 WHERE 절을 사용하는 것입니다. 예를 들어, 회계 데이터에서 특정 계정 코드만 추출하고 싶다면:
SELECT * FROM financial_data_2024 WHERE account_code = 'A1001';
이 쿼리는 financial_data_2024 테이블에서 계정 코드가 'A1001'인 모든 행을 반환합니다.
데이터 개수 확인하기
필터링된 결과가 얼마나 많은지 미리 확인하고 싶을 때는 COUNT() 함수를 사용합니다:
SELECT COUNT(*) as total_records
FROM financial_data_2024
WHERE account_code = 'A1001';
대용량 데이터를 다룰 때는 전체 데이터를 조회하기 전에 먼저 개수를 확인하는 것이 좋습니다.
집계 함수로 요약 정보 얻기
단순히 데이터를 나열하는 것보다 요약된 정보가 필요한 경우가 많습니다. 금액 합계를 구해보겠습니다:
SELECT SUM(amount) as total_amount
FROM financial_data_2024
WHERE account_code = 'A1001';
그룹별 집계 분석
더 상세한 분석을 위해서는 GROUP BY를 활용해 카테고리별로 데이터를 묶어서 살펴볼 수 있습니다:
SELECT
department_name,
COUNT(*) as record_count,
SUM(amount) as total_amount,
AVG(amount) as average_amount
FROM financial_data_2024
WHERE account_code = 'A1001'
GROUP BY department_name
ORDER BY total_amount DESC;
이 쿼리는 부서별로:
- 거래 건수
- 총 금액
- 평균 금액
을 계산하고, 총 금액이 큰 순서대로 정렬합니다.
시간 순서로 정렬하기
재무 데이터에서는 시간 순서가 중요합니다. 최신 데이터부터 확인하고 싶다면:
SELECT *
FROM financial_data_2024
WHERE account_code = 'A1001'
ORDER BY transaction_date DESC, document_number DESC
LIMIT 100;
LIMIT을 사용해서 상위 100건만 조회하면 성능도 좋아지고 결과도 관리하기 쉽습니다.
복합 조건 필터링
실무에서는 여러 조건을 동시에 만족하는 데이터를 찾아야 하는 경우가 많습니다:
SELECT
department_name,
transaction_date,
amount,
description
FROM financial_data_2024
WHERE account_code = 'A1001'
AND transaction_date >= '2024-01-01'
AND amount > 1000000
ORDER BY amount DESC;
월별 트렌드 분석
시계열 분석을 위해 월별로 데이터를 집계해보겠습니다:
SELECT
SUBSTR(year_month, 1, 4) as year,
SUBSTR(year_month, 5, 2) as month,
COUNT(*) as transaction_count,
SUM(amount) as monthly_total
FROM financial_data_2024
WHERE account_code = 'A1001'
GROUP BY year_month
ORDER BY year_month;
성능 최적화 팁
- 인덱스 활용: 자주 필터링하는 컬럼에는 인덱스를 생성하세요
- LIMIT 사용: 탐색적 분석 시에는 LIMIT으로 결과 수를 제한하세요
- 필요한 컬럼만 선택: SELECT * 대신 필요한 컬럼만 명시하세요
SELECT account_code, department_name, amount
FROM financial_data_2024
WHERE account_code = 'A1001'
LIMIT 1000;
마무리
SQL의 WHERE 절과 집계 함수를 잘 활용하면 대용량 데이터에서도 원하는 인사이트를 빠르게 얻을 수 있습니다. 단계별로 접근해서:
- 먼저 기본 필터링으로 데이터 범위 확인
- COUNT로 데이터 볼륨 파악
- 집계 함수로 요약 정보 추출
- GROUP BY로 세부 분석 수행
이런 순서로 진행하면 효율적인 데이터 분석이 가능합니다.
반응형