카테고리 없음

2025.11.04 TIL (본캠프, 12일차)

D:Connect 2025. 11. 4. 21:27

본캠프 12일차 아침이다. 오전과 오후에 SQL 강의와 Python 강의가 각각 있었다. SQL은 심화 개념인 Window Function과 WITH 구문을 배웠고, Python에서는 자료구조의 기초를 학습했다.

 

Window Function - 행과 행의 관계를 파악하는 함수

Window Function은 SQL을 배우면서 만나는 새로운 개념이다. 처음에 복잡해 보이지만, 그 역할을 이해하면 데이터 분석에서 굉장히 유용한 도구다.

Window Function은 행과 행 간의 관계를 정의하기 위해 제공되는 함수다. 분석함수 또는 순위 함수로도 알려져 있다. 이 함수를 사용하면 순위, 합계, 평균, 행 위치 등을 조작할 수 있다.

가장 중요한 특징들

☑️ 집계함수와의 차이점: GROUP BY 구문과 병행하여 사용할 수 있는 경우가 있다.

  • 집계함수는 GROUP BY와 함께 사용 가능
  • 순위함수, 순서함수, 비율함수는 GROUP BY와 함께 사용 불가능

☑️ 결과 건수 보존: Window Function으로 인해 결과 건수가 줄어들지 않는다. 이것이 GROUP BY와의 중요한 차이점이다.

☑️ GROUP BY와의 유사성: 윈도우 함수와 GROUP BY 구문은 둘 다 파티션을 분할한다는 의미에서 유사하지만, 동작 방식은 완전히 다르다.

☑️ 중첩 제한: 다른 함수와 달리 Window Function은 중첩해서 사용할 수 없다. 하지만 서브쿼리에는 사용할 수 있다.

 

Window Function의 종류 (총 4가지)

종류함수특징

순위 함수 RANK, DENSE_RANK, ROW_NUMBER 데이터의 순위를 매김
집계 함수 SUM, MAX, MIN, AVG, COUNT 데이터를 요약 (GROUP BY와 함께 사용 가능)
순서 함수 FIRST_VALUE, LAST_VALUE, LAG, LEAD 행의 위치나 순서에 따른 값 조회
비율 함수 RATIO_TO_REPORT, PERCENT_RANK, CUME_DIST, NTILE 데이터의 비율이나 백분위수 계산

 

기본 문법

ROW_NUMBER() OVER(PARTITION BY 컬럼1 ORDER BY 컬럼2)

 

 

WITH 구문 - 테이블 재사용

WITH 구문의 가장 큰 장점은 코드의 가독성 향상재사용성이다. 복잡한 서브쿼리를 WITH로 선언해두고, 메인 쿼리에서 참조하는 방식으로 사용한다.

WITH 임시테이블명 AS (
    SELECT 컬럼1, 컬럼2
    FROM 원본테이블
    WHERE 조건
)
SELECT *
FROM 임시테이블명;

 

WITH 구문을 사용하면 코드카타 문제풀이를 할 때 훨씬 더 깔끔하고 이해하기 쉬운 쿼리를 작성할 수 있다.

 

 

Python 학습에서 중요한 부분이 자료구조다. 데이터를 효율적으로 관리하고 처리하기 위해서는 각 자료구조의 특징을 이해해야 한다.

 

List (리스트)는 Python에서 가장 흔하게 사용되는 자료구조다. 순서가 있고, 같은 자료구조 안에 서로 다른 타입의 데이터를 저장할 수 있다.

더보기
fruits = ["사과", "바나나", "오렌지"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "사과", 3.14, True]

# 인덱싱
print(fruits[0])  # 출력: 사과

# 리스트 수정
fruits[1] = "딸기"

# 리스트 추가
fruits.append("포도")

리스트는 변경 가능하다는 특징이 있다. 원소를 추가, 삭제, 수정할 수 있다.

 

 

Dictionary (딕셔너리) 는 키(Key)와 값(Value)의 쌍으로 데이터를 저장한다. 그리고 순서가 없어 빠른 데이터 접근이 가능하다.

더보기
# 딕셔너리 생성
student = {
    "이름": "대한민국",
    "나이": 20,
    "학점": 4.5
}

# 값 접근
print(student["이름"])  # 출력: 대한민국

# 값 수정
student["나이"] = 21

# 새로운 키-값 쌍 추가
student["전공"] = "데이터분석"

딕셔너리는 키를 통한 직접 접근이 가능하다. 리스트와의 가장 큰 차이점이다.

 

 

Tuple (튜플) 은 리스트와 유사하지만 한 가지 큰 차이가 있다. 튜플은 변경 불가능하다.

더보기
# 튜플 생성
coordinates = (10, 20)
colors = ("빨강", "초록", "파랑")

# 튜플 인덱싱
print(coordinates[0])  # 출력: 10

# 튜플은 변경 불가능
# coordinates[0] = 15  # 에러 발생!

튜플은 변경할 수 없기 때문에 데이터를 보호하고 싶을 때 유용하다.

 

세 자료구조의 비교

자료 구조 순서 중복 변경 가능 접근 방식
List O O 가능 인덱싱
Dictionary X (순서 보존) X (키 기준) 가능 키를 통한 접근
Tuple O O 불가능 인덱싱

 

나머지 시간은 SQL 과제를 진행했다. 문제 하나당 푸는 시간이 갈수록 길어지고 있다.

문제의 난도가 올라갔다는 의미이기도 하지만 동시에 문제를 풀 때 더 깊이 생각하고 있다는 의미이기도 하다. 단순히 정답을 찾는 것이 아니라, 여러 방식으로 풀어보고 최적의 쿼리를 찾으려고 노력하는 중이다.

이런 과정이 실력을 쌓는 과정이라고 믿는다.