SQL로 특정 조건 데이터 효율적으로 추출하기

데이터베이스에서 원하는 조건에 맞는 데이터만 골라내는 것은 데이터 분석의 첫 번째 단계입니다. 오늘은 실무에서 자주 사용되는 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;

성능 최적화 팁

  1. 인덱스 활용: 자주 필터링하는 컬럼에는 인덱스를 생성하세요
  2. LIMIT 사용: 탐색적 분석 시에는 LIMIT으로 결과 수를 제한하세요
  3. 필요한 컬럼만 선택: SELECT * 대신 필요한 컬럼만 명시하세요
SELECT account_code, department_name, amount 
FROM financial_data_2024 
WHERE account_code = 'A1001'
LIMIT 1000;

마무리

SQL의 WHERE 절과 집계 함수를 잘 활용하면 대용량 데이터에서도 원하는 인사이트를 빠르게 얻을 수 있습니다. 단계별로 접근해서:

  1. 먼저 기본 필터링으로 데이터 범위 확인
  2. COUNT로 데이터 볼륨 파악
  3. 집계 함수로 요약 정보 추출
  4. GROUP BY로 세부 분석 수행

이런 순서로 진행하면 효율적인 데이터 분석이 가능합니다.

반응형

댓글 남기기