데이터

제로베이스 데이터사이언스 스쿨 - Part.02 데이터 분석을 위한 SQL-6

Leah (리아) 2025. 10. 5. 14:22
반응형

 SQL 함수

 

1. 단일행 함수 (Single Row Function)

각 행마다 개별적으로 적용되어, 행 수가 변하지 않고 그대로 유지된다.
주요 종류는 다음과 같다.

구분예시 함수설명
숫자형 ABS, ROUND, MOD 절대값, 반올림, 나머지 계산
문자형 UPPER, LOWER, LEFT, RIGHT, LENGTH, CONCAT 대/소문자 변환, 문자열 조작, 연결
날짜형 YEAR, MONTH, DAY, DATE_ADD, TIMESTAMPDIFF 날짜 계산, 차이 연산
형변환 CAST, DATE_FORMAT 데이터 형식 변환
일반 함수 CASE WHEN, IFNULL 조건 분기, NULL 처리

예시

 
SELECT TIMESTAMPDIFF(YEAR, BIRTH_DATE, '2025-01-01') AS AGE
FROM CUSTOMER;

→ 기준일자와 생년월일 차이를 계산해 ‘나이’를 구하는 예시

 


 

2. 복수행 함수 (Group Function)

여러 행을 묶어 하나의 결과값을 반환한다.
주요 예시는 다음과 같다.

구분예시 함수설명
집계 함수 COUNT, SUM, AVG, MIN, MAX 데이터의 개수, 합계, 평균, 최소/최대 계산
그룹 함수 GROUP BY, ROLLUP 그룹별 집계 및 누적 합계 생성

예시

SELECT YEAR(ORDER_DATE) AS ORDER_YEAR, SUM(QTY) AS QTY_SUM
FROM SALE
LEFT JOIN SALE_DETAIL USING (ORDER_NO)
GROUP BY YEAR(ORDER_DATE)
WITH ROLLUP;

 

3. 함수를 활용한 데이터 분석

실제 분석 상황을 가정하여 함수들을 종합적으로 활용했다

.

분석 시나리오 ①

  • 2025-01-01 기준 나이 40세 이상 회원에게 쿠폰 제공
  • 40세 이상 회원 중 주문수가 가장 많은 호텔과 그 호텔 내 인기 서비스를 조회

분석 시나리오 ②

  • 최근 구매일이 100일 이전인 회원에게 쿠폰 제공
  • 구매 이력이 있는 회원 중 최근 구매일 기준으로 100일 이상 경과한 회원 수 산출

이 과정에서 TIMESTAMPDIFF, CASE WHEN, DATE_FORMAT, COUNT(DISTINCT) 등의 함수가 종합적으로 활용되었다.


 

4. 함수 코딩 테스트

실무와 유사한 데이터 분석 문제를 통해 종합 실습을 수행했다

.

주요 과제

1. 연월별 주문수 및 매출액 계산

SELECT DATE_FORMAT(ORDER_DATE, '%Y-%m') AS ORDER_DATE_YM,
       SUM(QTY * PRICE) AS SALES_AMT_SUM,
       COUNT(DISTINCT ORDER_NO) AS ORDER_NO_DISTINCT_COUNT
FROM SALE
LEFT JOIN SALE_DETAIL USING (ORDER_NO)
LEFT JOIN SERVICE USING (SERVICE_CODE)
GROUP BY 1
ORDER BY 1 DESC;

 

2. 재구매율 계산 (2024 → 2025 재구매 회원 비율)

CASE WHEN과 COUNT(DISTINCT)를 조합해 성별별 재구매율 산출

3. 회원별 구매주기(방문주기) 계산
(MAX(ORDER_DATE) - MIN(ORDER_DATE)) / (구매횟수 - 1)

4. 평균 구매주기 산출 (AVG 함수 활용)

 

* 이 글은 제로베이스 데이터사이언스 파트타임 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.


 

💡 생각 정리

이번 강의에서는 SQL 함수가 데이터 전처리와 분석의 핵심 로직을 완성하는 도구라는 점을 명확히 체감했다.

그동안 SQL을 조건문과 집계 수준으로만 활용했지만, 함수를 익히면서 데이터를 가공·변환·요약하는 모든 과정이 SQL 안에서 가능하다는 점을 깨달았다.


특히 DATE_FORMAT, TIMESTAMPDIFF, CASE WHEN, IFNULL 같은 함수들은 데이터 분석뿐 아니라 비즈니스 로직을 SQL 수준에서 구현하는 핵심 문법으로 느껴졌다.

 

또한 단일행 함수와 복수행 함수의 구분은 단순히 문법이 아니라, “데이터의 흐름을 어디서 끊고, 어디서 요약할지”를 결정하는 사고 구조라는 점이 인상 깊었다.


즉, SQL 함수는 단순한 계산식이 아니라, 데이터 흐름을 설계하는 사고방식을 표현하는 언어였다.


🚀 적용점

  • 숫자형, 문자형, 날짜형, 변환형, 일반 함수별로 예시 쿼리를 직접 작성하고 결과를 비교한다.
  • DATE_FORMAT, TIMESTAMPDIFF 등 날짜 함수로 기간별 분석, 나이 계산 등 실무형 문제를 연습한다.
  • CASE WHEN과 IFNULL을 활용해 데이터 라벨링, NULL 처리, 조건 분기 로직을 작성한다.
  • 단일행 함수(각 행 계산)와 복수행 함수(집계 계산)의 차이를 시각적으로 이해하기 위해 GROUP BY 전후 데이터를 비교한다.
  • 코딩 테스트형 문제를 반복 실습하여, 함수의 조합으로 실무 분석 시나리오를 완성하는 능력을 기른다.

👉 이번 강의는 SQL을 ‘데이터 조회 언어’에서 ‘데이터 분석 언어’로 바라보게 해준 핵심 파트였다.
함수를 자유롭게 조합할 수 있다면, 복잡한 분석 로직도 SQL 한 문장으로 구현할 수 있다.

반응형