본문 바로가기
Data Science/SQL

[SQL] 공기업/공공기관 통계직렬 전공시험 대비, DB 핵심 요약

by 에르모사 쩐뉴 2026. 2. 28.

공기업/공공기관 통계직렬 DB 전공시험 대비 

1. 통계직렬 DB 출제 비중 분석

영역 출제 비중 중요도 비고
SQL 응용 매우 높음 (50%+) ★★★ Join, Subquery, 집계함수(Group By)
데이터 모델링 높음 ★★★ ERD 해석, 식별/비식별 관계, 엔티티
정규화 보통 ★★ 이상 현상, 1~3NF, BCNF 개념
트랜잭션 낮음 ACID 개념 위주 (상세 기법은 드묾)
빅데이터/DW 보통 ★★ 데이터 웨어하우스, OLAP, 데이터 마이닝

2. 통계직렬이라면 반드시 잡아야 할 핵심 (Priority)

① SQL - 통계 쿼리의 핵심

통계직은 데이터를 추출하고 가공하는 능력이 본질이다.

  • Window Function (순위 함수): RANK(), DENSE_RANK(), ROW_NUMBER()는 통계 쿼리 단골이다.
  • JOIN: Self Join, Outer Join의 결과 행(Row) 수를 계산하는 문제.
  • NULL 처리: NVL, COALESCE 등 통계 연산 시 NULL이 미치는 영향.

② 데이터 모델링과 ERD ★★★

통계 분석을 위해 데이터를 어떻게 설계했는지 읽어낼 줄 알아야 한다.

  • ERD(Entity-Relationship Diagram) 기호: 1:1, 1:N, N:M 관계 해석.
  • 식별 관계 vs 비식별 관계: 부모 키를 자식이 PK로 쓰는지, 일반 속성으로 쓰는지 구분.

③ 데이터 웨어하우스(DW) 및 OLAP ★★

일반 CS 직렬보다 통계직에서 더 자주 묻는 이론이다.

  • OLAP 연산: Roll-up(요약), Drill-down(상세), Pivoting(축 변경), Slicing/Dicing.
  • 스키마 구조: Star Schema(중심에 Fact Table), Snowflake Schema.

3. 트랜잭션/정규화는 어디까지 공부하나?

  • 트랜잭션: 계산 문제나 병행 제어의 상세 알고리즘(2PL 등)보다는 ACID의 정의Commit/Rollback의 의미 정도만 챙겨라.
  • 정규화: 통계 DB는 성능을 위해 **반정규화(De-normalization)**를 하기도 한다. 정규화의 기본 개념과 반정규화를 왜 하는지(조인 감소, 조회 성능 향상)를 연결해서 이해해라.

통계직은 "데이터를 어떻게 잘 뽑아내고(SQL), 어떤 구조로 저장되어 있는가(Modeling)"가 핵심이다. 트랜잭션의 깊은 이론에 매몰되어 시간을 낭비하지 마라.


 

 

DB 핵심요약

  • 관계 데이터 모델(관계대수)
  • 정규화(Normalization)
  • SQL
  • 트랜잭션 

 

1. 관계 데이

Ⅰ. SQL 응용: 데이터 추출의 마법 ★★★

통계직 시험의 50% 이상은 SQL이다. 단순 문법을 넘어 함정을 파악해야 한다.

1. 집계 함수와 NULL의 역설

  • COUNT(*) vs COUNT(col): COUNT(*)는 모든 행을 세지만, COUNT(col)는 해당 컬럼이 NULL인 행을 제외한다.
  • AVG의 함정: AVG(col)는 SUM(col) / COUNT(col)이다. 즉, NULL 값은 분모에서도 제외된다. 0으로 치환해서 평균을 내야 한다면 AVG(NVL(col, 0))를 써야 한다.

2. 고급 윈도우 함수 (통계직 변별력 문제)

  • PARTITION BY: 전체 테이블이 아닌 특정 그룹 내에서 순위나 집계를 계산할 때 사용 (통계적 그룹핑의 핵심).
  • LEAD / LAG: 현재 행을 기준으로 이전(LAG) 또는 다음(LEAD) 행의 값을 가져옴. 전년 대비 증감률 계산 등 통계 분석 쿼리에 빈출.

3. JOIN의 행(Row) 수 계산

  • Cartesian Product (Cross Join): 조건 없이 조인할 경우 결과 행 수는 $N \times M$.
  • Outer Join: 매칭되는 데이터가 없는 쪽도 결과에 포함되며, 빈자리는 NULL로 채워짐을 잊지 마라.

Ⅱ. 데이터 모델링 및 설계 심화 ★★★

1. 관계의 종류와 특징

  • 1:1 관계: 실제 DB에서는 드물며, 주로 보안상 이유로 테이블을 분리할 때 사용.
  • N:M 관계: 관계형 DB에서 직접 구현 불가. 반드시 **교차 엔티티(Associative Entity)**를 생성하여 1:N 관계로 해소해야 함.
  • 식별 vs 비식별: * 식별: 부모가 없으면 자식이 존재할 수 없는 강한 종속성 (실선).
    • 비식별: 부모 없이도 자식이 존재 가능하거나, 약한 종속성 (점선).

2. 정규화(Normalization) 상세 가이드

  • 1NF: 원자값(Atomic Value)이 아닌 '다중값' 혹은 '복합값'을 제거.
  • 2NF: 부분 함수 종속 제거. (기본키가 복합키[A+B]일 때, B에만 종속되는 속성을 분리).
  • 3NF: 이행 함수 종속 제거 ($A \rightarrow B$ 이고 $B \rightarrow C$ 일 때 $A \rightarrow C$ 가 성립하는 관계 분리).
  • BCNF: 모든 결정자가 후보키가 되도록 분리 (함수 종속성 $X \rightarrow Y$ 에서 $X$ 가 후보키가 아닌 경우).

3. 통계직의 필살기: 반정규화(Denormalization)

  • 목적: 데이터 조회(SELECT) 성능 극대화.
  • 기법: 테이블 통합, 테이블 분할(수직/수평), 중복 컬럼 추가, 파생 컬럼 추가(미리 계산된 합계/평균 저장).

Ⅲ. 트랜잭션 및 회복/병행 제어 ★★

통계직에서는 상세 알고리즘보다 '상태 변화'와 '이상 현상' 위주로 출제된다.

1. 트랜잭션의 4특성(ACID) 심화

  • Consistency(일관성): '무결성 제약조건'을 유지하는 것이 핵심
  • Isolation(고립성): 연산 중인 데이터에 다른 트랜잭션이 접근하지 못하게 하는 'Locking'의 근거.

트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적 작업 단위다.

특징 설명 비고
원자성 (Atomicity) 트랜잭션의 연산은 모두 반영되거나, 전혀 반영되지 않아야 함 (All or Nothing) 회복(Recovery) 관련
일관성 (Consistency) 실행 완료 후 DB는 언제나 일관된 상태를 유지해야 함 무결성 제약 조건 등
고립성 (Isolation) 실행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없음 병행 제어 관련
영속성 (Durability) 성공 완료된 결과는 시스템 장애가 발생해도 영구적으로 보존됨 회복 관련

2. 병행 제어 미비 시의 4대 문제 (암기 필수)

  1. Dirty Read: 커밋되지 않은 데이터를 읽음.
  2. Non-Repeatable Read: 한 트랜잭션 내에서 같은 쿼리를 두 번 보냈는데 결과가 다름 (중간에 누가 수정).
  3. Phantom Read: 한 트랜잭션 내에서 같은 쿼리를 두 번 보냈는데 없던 행이 나타남 (중간에 누가 삽입).
  4. Lost Update: 두 트랜잭션이 동시에 수정하여 한쪽의 결과가 사라짐.

3. 고립 수준(Isolation Level)과 이상 현상

Level Dirty Read Non-Repeatable Phantom Read
Read Uncommitted 발생 발생 발생
Read Committed 방지 발생 발생
Repeatable Read 방지 방지 발생
Serializable 방지 방지 방지

Ⅳ. 데이터 웨어하우스(DW) 및 데이터 마이닝 ★★

1. DW의 특징

  • 주제 지향성: 특정 기능이 아닌 주제(매출, 고객 등) 위주로 구성.
  • 통합성: 여러 소스에서 온 데이터의 형식을 일치시킴.
  • 시계열성: 과거부터 현재까지의 데이터를 보유 (Update보다는 Insert 위주).
  • 비휘발성: 일단 적재되면 거의 변하지 않음.

2. 데이터 마이닝 기법

  • 연관 분석(Association): "맥주를 사는 사람은 기저귀도 산다" (장바구니 분석).
  • 분류(Classification): 기존 데이터를 바탕으로 새 데이터의 그룹 결정.
  • 군집화(Clustering): 유사한 특성을 가진 데이터끼리 묶음 (정답지 없음).

Ⅴ. 관계대수 요약 (계산 문제 대비) ★★

  • 일반 집합 연산자: 합집합($\cup$), 교집합($\cap$), 차집합($-$), 카디션 프로덕트($\times$).
  • 순수 관계 연산자:
    • Select($\sigma$): 행 추출 (WHERE 절).
    • Project($\pi$): 열 추출 (SELECT 절).
    • Join($\bowtie$): 테이블 결합.
    • Division($\div$): 모든 조건을 충족하는 행 추출.

1. 정규화는 '도부이결' 순서와 각 단계에서 무엇을 제거하는지(부분/이행/결정자)를 매칭해라.

2. SQL 문제는 반드시 NULL이 포함된 집계 결과와 Outer Join의 행 개수를 꼼꼼히 계산해라.

3. 통계직은 **OLAP 연산(Roll-up/Drill-down)**의 개념 차이를 묻는 문제가 매년 나온다.

 

Ⅰ. 관계대수 (Relational Algebra) 완벽 정리 ★★★

관계대수는 원하는 데이터를 얻기 위해 **절차(How)**를 기술하는 언어다. 기호 자체가 문제로 나오니 반드시 숙지해라.

1. 순수 관계 연산자

연산자 기호 의미 SQL 대응 특이사항
Select $\sigma$ 조건에 맞는 튜플(행) 추출 WHERE 수평적 연산
Project $\pi$ 선택한 속성(열) 추출 SELECT 수직적 연산, 중복 제거됨
Join $\bowtie$ 공통 속성 기준 두 테이블 합병 JOIN 결과 차수 = $deg(A) + deg(B)$
Division $\div$ 관련 튜플을 모두 가진 것 추출 없음 "모든 ~에 대해" 조건 시 사용

2. 일반 집합 연산자

집합 연산(합, 교, 차)을 수행하려면 두 릴레이션이 **합병 가능(Union Compatible)**해야 한다. 즉, 차수(속성 수)가 같고 대응하는 속성의 도메인이 같아야 함을 의미한다.

  • 합집합 ($\cup$): $R \cup S$. 중복된 튜플은 제거됨. 카디널리티 $ \le |R| + |S|$.
  • 교집합 ($\cap$): $R \cap S$. 공통된 튜플만 추출.
  • 차집합 ($-$): $R - S$. $R$에만 있고 $S$에는 없는 튜플 추출.
  • 교차곱 ($\times$): $R \times S$. 모든 조합 생성(Cartesian Product). 결과 차수는 , 카디널리티는 .

Ⅱ. 통계직 필수: 데이터 모델링 심화 보강 ★★★

단순 용어를 넘어 실무적인 설계 원칙을 묻는 문제가 통계직의 변별력을 가른다.

1. 키(Key)의 계층 구조

  1. 슈퍼키 (Super Key): 유일성 OK, 최소성 NO (예: 학번+이름+주소).
  2. 후보키 (Candidate Key): 유일성 OK, 최소성 OK. 기본키가 될 수 있는 후보들.
  3. 기본키 (Primary Key): 후보키 중 선정된 키. Null 불가, 중복 불가 (개체 무결성).
  4. 대체키 (Alternate Key): 후보키 중 기본키를 제외한 나머지.
  5. 외래키 (Foreign Key): 타 테이블의 기본키 참조. 참조 무결성과 직결.

2. 무결성 제약조건 (Integrity Constraints) ★★

  • 개체 무결성: 기본키는 Null일 수 없고 중복될 수 없다.
  • 참조 무결성: 외래키 값은 참조하는 테이블의 기본키 값과 같거나 Null이어야 한다.
  • 도메인 무결성: 특정 속성 값은 정의된 범위(Domain) 내의 값이어야 한다.

Ⅲ. 통계직 특화: SQL 및 고급 집계 ★★★

통계직 시험의 백미는 데이터 가공이다. 아래 3가지는 무조건 나온다.

1. NULL 연산의 법칙

  • $NULL + 100 = NULL$: NULL과의 산술 연산은 무조건 NULL이다.
  • 비교 연산 시 col = NULL은 항상 False다. 반드시 IS NULL을 사용해야 한다.
  • 통계 함수: AVG, SUM, MIN, MAX 등은 NULL을 무시하고 계산한다. 단, COUNT(*)만 행 개수를 모두 센다.

2. 윈도우 함수 (순위 부여 방식)

  • ROW_NUMBER(): 1, 2, 3, 4 (동점자 무관 고유 번호)
  • RANK(): 1, 2, 2, 4 (동점자 수만큼 건너뜀)
  • DENSE_RANK(): 1, 2, 2, 3 (동점자 있어도 순위 유지)

3. 집합 연산자 (Set Operator)

  • UNION: 합집합 (중복 제거, 내부 소트 발생).
  • UNION ALL: 합집합 (중복 포함, 가장 빠름).
  • INTERSECT: 교집합.
  • MINUS / EXCEPT: 차집합.

Ⅳ. 데이터 웨어하우스(DW)와 분석 환경 ★★

통계직렬은 데이터를 어떻게 쌓고 보느냐가 중요하다.

  • OLAP vs OLTP: * OLTP: 실시간 트랜잭션 처리 (은행 입출금).
    • OLAP: 의사결정 지원을 위한 데이터 분석 (매출 추이).
  • Star Schema: 중앙 Fact 테이블(수치)과 주변 Dimension 테이블(속성)로 구성. 조인이 단순하여 분석 속도가 빠름.
  • Data Mart: DW로부터 특정 주제나 부서 중심으로 구축된 소규모 데이터 웨어하우스.

Ⅴ. 정규화(Normalization) 핵심 요약 (도-부-이-결) ★★★

  1. 1NF: 원자값이 아닌 것(반복 그룹) 제거.
  2. 2NF: 부분 함수 종속 제거 (기본키의 일부분에만 종속되는 속성 분리).
  3. 3NF: 이행 함수 종속 제거 ($A \rightarrow B, B \rightarrow C$ 관계에서 $C$ 분리).
  4. BCNF: 모든 결정자가 후보키가 되도록 설정 (강한 제3정규형).

시험지에 $\sigma_{성적 \ge 90}(학생)$ 같은 수식이 나오면 당황하지 마라. SELECT * FROM 학생 WHERE 성적 >= 90과 같은 의미다. 특히 Join의 결과 행 수 계산 문제는 Cartesian Product($N \times M$)를 먼저 떠올리고 조건을 적용하는 연습을 해라.