본문으로 건너뛰기
SQL 기초집LESSON 18

CASE와 문자열·날짜 함수

난이도입문 → 초급
예상 시간30분
선수지식이전 강의

18강. CASE와 문자열·날짜 함수

1. 이번 강의에서 해결할 문제

원시 점수와 타임스탬프만으로는 보고서가 읽기 어렵습니다. SQL 표현식으로 등급, 표시 문자열, 기간 단위를 만듭니다.

2. 학습 목표

3. 핵심 개념

CASE는 조건을 위에서부터 평가해 첫 결과를 반환합니다. SQLite는 전용 날짜 저장 클래스 없이 ISO-8601 TEXT, Julian day, Unix timestamp 등을 사용하며 date, datetime, strftime 같은 함수로 해석합니다. 프로젝트는 UTC ISO 문자열 하나로 통일합니다.

4. 단계별 SQL 예시

대상 테이블: players, games, match_results (읽기 전용)
파일 경로: C:\dev\game-ranking-db\sql\18-case-functions.sql

sql/18-case-functions.sql
SELECT
result_id,
score,
CASE
WHEN score >= 1300 THEN 'S'
WHEN score >= 1100 THEN 'A'
WHEN score >= 900 THEN 'B'
ELSE 'C'
END AS score_grade
FROM match_results
ORDER BY score DESC;

SELECT
username || ' [' || region || ']' AS display_label,
LENGTH(username) AS username_length,
LOWER(username) AS normalized_name
FROM players;

SELECT
strftime('%Y-%m', started_at) AS game_month,
COUNT(*) AS game_count
FROM games
GROUP BY strftime('%Y-%m', started_at)
ORDER BY game_month;
PowerShell · 실행 순서
sqlite3 -header -box .\data\game_ranking.db ".read .\sql\18-case-functions.sql"

PostgreSQL 차이: 월 단위는 date_trunc('month', started_at), 문자열 결합 ||은 동일하며 started_at은 보통 TIMESTAMPTZ로 저장합니다.

5. 쿼리가 동작하는 이유

CASE는 높은 점수 조건부터 검사합니다. ||는 문자열을 연결합니다. strftime이 UTC ISO 텍스트에서 연·월 문자열을 추출하고 같은 월을 그룹으로 묶습니다.

6. 자주 하는 실수와 안전한 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

CASE와 문자열·날짜 함수 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“CASE와 문자열·날짜 함수”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“CASE와 문자열·날짜 함수”의 작업 기준으로 ‘SQLite 날짜 함수를 PostgreSQL에 그대로 사용’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

18강. CASE와 문자열·날짜 함수 미완료 상태