| 구분 | 이름/기호 | 설명 | 예시(a=10, b=3) | 결과 |
| 함수 | MOD(a, b) | a를 b로 나눈 나머지를 반환 | MOD(10, 3) | 1 |
| 연산자 | a % b | a를 b로 나눈 나머지를 반환 (MOD와 동일한 역할) | 10 % 3 | 1 |
| 함수 | VAR_SAMP(col) | 표본 분산을 계산하는 집계 함수 (나머지와는 관련 없음) | VAR_SAMP(값들) | 값에 따라 다름 |
✅ 문자열 관련 함수 정리 요약표
| 추출 | LEFT, RIGHT, SUBSTR, SUBSTRING |
| 위치 찾기 | INSTR, LOCATE |
| 나누기/치환 | SPLIT_PART, REPLACE |
| 길이/공백 | LENGTH, CHAR_LENGTH, TRIM, LTRIM, RTRIM |
| 형변환 | CAST, STR |
1. 부분 문자열 추출
| LEFT(str, n) | 왼쪽에서 n글자 추출 | LEFT('abcdef', 3) | 'abc' |
| RIGHT(str, n) | 오른쪽에서 n글자 추출 | RIGHT('abcdef', 2) | 'ef' |
| SUBSTR(str, start, len) | 시작 위치부터 len만큼 추출 | SUBSTR('abcdef', 2, 3) | 'bcd' |
| SUBSTRING(str, start, len) | SUBSTR과 동일 (DBMS 따라 이름만 다름) | SUBSTRING('abcdef', 2, 3) | 'bcd' |
2. 특정 위치 기준 추출
| INSTR(str, sub) | 특정 문자열의 위치 찾기 | INSTR('applepie', 'p') | 2 |
| LOCATE(sub, str) | INSTR과 비슷 (MySQL) | LOCATE('p', 'applepie') | 2 |
🔎 활용: 특정 문자 기준으로 SUBSTR과 함께 사용해서 "앞부분" 또는 "뒷부분" 자르기
3. 문자 나누기 / 치환
| SPLIT_PART(str, delim, index) | 구분자로 나눈 n번째 조각 (PostgreSQL) | SPLIT_PART('a,b,c', ',', 2) | 'b' |
| REPLACE(str, from, to) | 문자열 치환 | REPLACE('hello', 'e', 'a') | 'hallo' |
🔸 MySQL에서는 SPLIT_PART 대신 JSON tricks이나 SUBSTRING + LOCATE 조합 사용해야 함
4. 문자열 포맷팅/길이 관련
| CHAR_LENGTH(str) 또는 LENGTH(str) | 문자열 길이 | CHAR_LENGTH('abc') | 3 |
| TRIM(str) | 앞뒤 공백 제거 | TRIM(' hi ') | 'hi' |
| LTRIM(str) | 왼쪽 공백 제거 | LTRIM(' hi') | 'hi' |
| RTRIM(str) | 오른쪽 공백 제거 | RTRIM('hi ') | 'hi' |
5. 형변환 관련
| CAST(expr AS CHAR) | 문자열로 변환 | CAST(123 AS CHAR) | '123' |
| STR(num) | 숫자를 문자열로 (SQL Server) | STR(12.34, 5, 2) | '12.34' |
6. WHERE 절에 집계함수 쓰고싶다면
SELECT *
FROM tips
WHERE total_bill > (SELECT AVG(total_bill) AS AVG_BILL FROM tips)
조건: 식사 금액이 테이블당 평균 식사 금액보다 더 많은 경우
집계 함수는 GROUP BY 없이 WHERE절에 직접 사용할 수 없습니다.
왜냐하면 WHERE절은 각 행을 기준으로 필터링하기 때문입니다
그래서 서브쿼리로 먼저 평균값을 구한 뒤에 각 행에 대해 비교를 하면
문제에서 원하는 조건이 성립됩니다.
'코딩 테스트 > 02. SQL' 카테고리의 다른 글
| [HackerRank] SQL Basic (easy)(1) (4) | 2025.08.12 |
|---|---|
| [solvesql] Lv2 문제 풀이 및 함수 정리 (8) | 2025.08.11 |
| [프로그래머스]SQL쿼리테스트 Lv4(3) (6) | 2025.08.04 |
| [프로그래머스]SQL쿼리테스트 Lv4(2) (2) | 2025.08.03 |
| [프로그래머스]SQL 쿼리테스트 Lv4(1) (1) | 2025.08.01 |
