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
0 / 2CASE와 문자열·날짜 함수 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
18강. CASE와 문자열·날짜 함수 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.