반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 회계처리
- 복구충당부채
- 유형자산 회계실무
- 무형자산
- 영업권
- 국세청
- 회계정책
- K-IFRS
- k-ifrs 1023
- 회계기준
- 사례분석
- 유형자산
- 종합소득세
- 세금신고
- 취득원가
- 소득세
- 기업가치
- 골프
- 연말정산
- 원상회복 의무
- 골린이
- 지분법
- 부가가치세
- 충당부채
- 연결
- 자가건설
- 파이썬
- 내부회계
- k-ifrs 1016호
- 공정가치
Archives
- Today
- Total
회계 밖 세상
SQLite로 연도별 데이터 비교 및 조건 필터링 완벽 가이드 (ft. CSV 내보내기 실무 팁) 본문
반응형
매년 업데이트되는 데이터를 비교 분석하는 일은 다양한 업무 분야에서 자주 발생합니다. 매출 데이터, 고객 정보, 재고 현황, 직원 정보 등 시간에 따라 변화하는 모든 데이터에 적용할 수 있는 방법입니다. 오늘은 SQLite와 DB Browser를 활용해 2023년 vs 2024년 데이터 비교를 실무 예제로 정리해보겠습니다.
1. 데이터 준비 및 테이블 구조 확인
먼저 비교할 두 테이블의 구조를 파악해야 합니다. DB Browser에서 다음 명령어로 테이블 정보를 확인할 수 있습니다.
PRAGMA table_info(data_2023);
PRAGMA table_info(data_2024);
이 명령어는 컬럼명, 자료형, NULL 허용 여부 등을 보여주어 두 테이블의 구조가 동일한지 확인할 수 있습니다.
실무 팁: 테이블 구조가 다르다면 비교 전에 컬럼을 통일하거나 별칭(alias)을 사용해 매칭시켜야 합니다.
2. 기본키 기준 데이터 조인하기
데이터 비교의 핵심은 **고유 식별자(기본키)**를 기준으로 두 테이블을 연결하는 것입니다. 여기서는 'id' 컬럼을 예시로 사용하겠습니다.
CREATE TABLE comparison_data AS
SELECT
d24.id,
d24.name AS name_2024,
d23.name AS name_2023,
d24.category AS category_2024,
d23.category AS category_2023,
d24.amount AS amount_2024,
d23.amount AS amount_2023,
d24.status AS status_2024,
d23.status AS status_2023
FROM data_2024 d24
LEFT JOIN data_2023 d23 ON d24.id = d23.id;
조인 방식 선택 가이드:
- LEFT JOIN: 2024년 기준 데이터 (신규 항목 포함)
- INNER JOIN: 양쪽 연도에 모두 존재하는 데이터만
- FULL OUTER JOIN: 모든 데이터 포함 (SQLite에서는 UNION으로 구현)
3. 다양한 조건으로 데이터 필터링
실무에서는 복합적인 조건으로 데이터를 추출해야 하는 경우가 많습니다. 다음은 8개 조건을 조합한 예제입니다:
SELECT * FROM comparison_data
WHERE
category_2024 = '전자제품'
AND status_2024 = '활성'
AND amount_2024 > 1000000
AND name_2024 LIKE '%프리미엄%'
AND category_2023 = '가전제품'
AND status_2023 = '대기'
AND amount_2023 BETWEEN 500000 AND 2000000
AND name_2023 NOT LIKE '%구형%';
활용 사례:
- 인사 관리: 부서 이동, 직급 변경 추적
- 재고 분석: 카테고리 변경, 가격 인상/인하 항목
- 고객 분석: 등급 변화, 구매 패턴 변화
- 매출 분석: 제품군 재분류, 수익성 변화
4. 데이터 현황 파악하기
분석 전에 데이터의 전체적인 현황을 파악하는 것이 중요합니다.
-- 전체 데이터 건수
SELECT COUNT(*) as 총_데이터수 FROM comparison_data;
-- 매칭 현황 분석
SELECT
COUNT(*) as 전체건수,
COUNT(name_2023) as 기존데이터_매칭수,
COUNT(*) - COUNT(name_2023) as 신규데이터수,
ROUND((COUNT(name_2023) * 100.0 / COUNT(*)), 2) as 매칭률
FROM comparison_data;
-- 컬럼 정보 확인
PRAGMA table_info(comparison_data);
5. 변화 분석 쿼리 예제
값 변경 추적
-- 이름이 변경된 항목
SELECT id, name_2023, name_2024
FROM comparison_data
WHERE name_2023 != name_2024
AND name_2023 IS NOT NULL;
-- 금액 변화 분석
SELECT
id,
name_2024,
amount_2023,
amount_2024,
(amount_2024 - amount_2023) as 변화량,
ROUND(((amount_2024 - amount_2023) * 100.0 / amount_2023), 2) as 변화율
FROM comparison_data
WHERE amount_2023 IS NOT NULL
AND amount_2024 != amount_2023;
카테고리 변경 분석
-- 카테고리가 변경된 항목별 집계
SELECT
category_2023 as 이전카테고리,
category_2024 as 현재카테고리,
COUNT(*) as 변경건수
FROM comparison_data
WHERE category_2023 != category_2024
AND category_2023 IS NOT NULL
GROUP BY category_2023, category_2024
ORDER BY 변경건수 DESC;
6. CSV 내보내기 실무 팁
SQLite에서 CSV로 데이터를 내보낼 때 주의해야 할 설정들입니다.
개행문자 설정 가이드
설정 | 의미 | 추천 상황 |
CR+LF | \r\n (Windows 표준) | Excel에서 열어볼 때 |
LF | \n (Linux/Unix 표준) | 서버 분석, 프로그래밍 활용 |
CR | \r (구형 Mac) | 거의 사용하지 않음 |
DB Browser에서 CSV 내보내기 설정
- File → Export → Table(s) as CSV
- 테이블 선택 후 옵션 설정:
- 구분자: 콤마(,) 권장
- 따옴표: 텍스트 필드 보호용
- 개행문자: CR+LF (Windows 호환성)
- 인코딩: UTF-8 (한글 깨짐 방지)
💡 Pro Tip: 대용량 데이터는 조건을 나누어 여러 번 내보내거나, LIMIT을 사용해 샘플 데이터부터 확인해보세요.
7. 데이터 품질 검증
분석 결과의 신뢰성을 위해 데이터 품질을 검증하는 쿼리들입니다.
-- 중복 ID 검사
SELECT id, COUNT(*) as 중복수
FROM data_2024
GROUP BY id
HAVING COUNT(*) > 1;
-- NULL 값 현황
SELECT
'name' as 컬럼명,
COUNT(*) - COUNT(name_2024) as NULL_2024,
COUNT(*) - COUNT(name_2023) as NULL_2023
FROM comparison_data
UNION ALL
SELECT
'amount' as 컬럼명,
COUNT(*) - COUNT(amount_2024) as NULL_2024,
COUNT(*) - COUNT(amount_2023) as NULL_2023
FROM comparison_data;
-- 이상값 탐지 (예: 음수 금액)
SELECT COUNT(*) as 이상값_건수
FROM comparison_data
WHERE amount_2024 < 0 OR amount_2023 < 0;
반응형
'IT이야기' 카테고리의 다른 글
SK텔레콤 유심 해킹 사건 완전정리: 피해 방지부터 대응까지 (0) | 2025.05.23 |
---|---|
이미지 파일 변환 완벽 가이드: SVG를 PNG로, PNG를 JPG로 3분 만에! (0) | 2025.05.23 |
DB Browser for SQLite 완벽 가이드: 초보자도 5분 만에 마스터하는 방법 (0) | 2025.05.22 |
대용량 회계 데이터 효율적으로 요약하기: Python과 SUMIF 기법 (0) | 2025.05.13 |
파이썬으로 여러 CSV 파일을 하나로 합치는 방법 (0) | 2025.05.09 |