회계 밖 세상

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

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;

성능 최적화 팁

  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로 세부 분석 수행

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

반응형