🎯 숫자 관련 함수
| ROUND(x, d) | 숫자를 d 자리까지 반올림 (default 0) | ROUND(3.1415, 2) | 3.14 |
| CEIL(x) | x보다 크거나 같은 최소 정수 | CEIL(3.2) | 4 |
| FLOOR(x) | x보다 작거나 같은 최대 정수 | FLOOR(3.9) | 3 |
| TRUNCATE(x, d) | 소수점 d 자리까지만 표시 | TRUNCATE(3.1415, 2) | 3.14 |
🔤 문자열 관련 함수
| SUBSTRING(str, start, len) | 문자열 일부 추출 | SUBSTRING('Hello', 1, 2) | 'He' |
| LEFT(str, n) | 왼쪽부터 n글자 추출 | LEFT('Hello', 3) | 'Hel' |
| RIGHT(str, n) | 오른쪽부터 n글자 추출 | RIGHT('Hello', 2) | 'lo' |
| CONCAT(str1, str2, ...) | 문자열 연결 | CONCAT('A', 'B') | 'AB' |
| REPLACE(str, from, to) | 문자열 치환 | REPLACE('banana', 'na', 'oo') | 'baooo' |
| INSTR(str, substr) | 부분 문자열 위치 반환 | INSTR('hello', 'e') | 2 |
| SUBSTRING_INDEX(str, delim, count) | 구분자 기준으로 자름 | SUBSTRING_INDEX('서울 강남구 역삼동', ' ', 2) | '서울 강남구' |
📅 날짜 관련 함수
| NOW() | 현재 날짜와 시간 반환 | NOW() | 2025-04-25 14:32:00 |
| CURDATE() | 현재 날짜 반환 | CURDATE() | 2025-04-25 |
| DATE_FORMAT(date, format) | 날짜 포맷 지정 | DATE_FORMAT(NOW(), '%Y-%m-%d') | 2025-04-25 |
| DATEDIFF(date1, date2) | 날짜 차이 (일 단위) | DATEDIFF('2025-05-01', '2025-04-25') | 6 |
| YEAR(date) / MONTH(date) / DAY(date) | 연도 / 월 / 일 추출 | YEAR('2025-04-25') | 2025 |
⚙️ 조건 & NULL 처리 함수
| IF(expr, true_val, false_val) | 조건문 처리 | IF(score > 60, 'Pass', 'Fail') | 'Pass' |
| IFNULL(expr, value) | NULL이면 대체 값 반환 | IFNULL(NULL, 0) | 0 |
| COALESCE(val1, val2, ...) | 가장 먼저 NULL이 아닌 값 반환 | COALESCE(NULL, NULL, 'A') | 'A' |
| CASE | 복수 조건 처리 | CASE WHEN x > 0 THEN '양수' ELSE '음수' END | '양수' |
🏆 윈도우 함수 (Window Functions)
| ROW_NUMBER() | 파티션 내 순위 (중복 순위 없음) | ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) | 1, 2, 3, ... |
| RANK() | 동일 순위 허용, 다음 순위 건너뜀 | RANK() OVER (ORDER BY score DESC) | 1, 1, 3, ... |
| DENSE_RANK() | 동일 순위 허용, 다음 순위 안 건너뜀 | DENSE_RANK() OVER (ORDER BY score DESC) | 1, 1, 2, ... |
| NTILE(n) | n등분한 그룹 번호 부여 | NTILE(4) OVER (ORDER BY salary) | 1~4 그룹 |
| LAG(expr, n) | 이전 n행의 값 참조 | LAG(score, 1) OVER (ORDER BY date) | 이전 점수 |
| LEAD(expr, n) | 다음 n행의 값 참조 | LEAD(score, 1) OVER (ORDER BY date) | 다음 점수 |
더보기
🚀 활용 팁
- 📌 SUBSTRING_INDEX 는 주소 데이터에서 읍/면/동 단위로 자를 때 정말 자주 나와요!
- 📌 DATE_FORMAT은 날짜를 출력 포맷으로 맞춰야 하는 문제에서 필수!
- 📌 ROUND, TRUNCATE는 평균 계산, 점수 조정에서 자주 등장합니다.
- 📌 문자열 전처리 문제에서는 LEFT / RIGHT / REPLACE는 거의 고정 단골이에요.
'Language > SQL' 카테고리의 다른 글
| GraphQL 살펴보기 (0) | 2025.03.18 |
|---|