LAG – 이전 행 값 가져오기LAG(column, offset, default) OVER (ORDER BY ...)
예: 전월 대비 매출 확인
SELECT month, sales,
sales - LAG(sales) OVER (ORDER BY month) AS diff
FROM sales_data;
LEAD – 다음 행 값 가져오기LEAD(column, offset, default) OVER (ORDER BY ...)
예: 다음 달 예측값과 비교
SELECT month, sales,
LEAD(sales) OVER (ORDER BY month) AS next_month_sales
FROM sales_data;
RANK, DENSE_RANK, ROW_NUMBER – 순위 함수RANK() OVER (PARTITION BY dept ORDER BY salary DESC)
RANK: 공동 순위 시 건너뜀 (예: 1, 2, 2, 4)DENSE_RANK: 공동 순위 시 건너뛰지 않음 (예: 1, 2, 2, 3)ROW_NUMBER: 무조건 1, 2, 3... 순번 부여LPAD, RPAD – 문자열 길이 맞추기LPAD('123', 5, '0') → '00123'
RPAD('abc', 6, '*') → 'abc***'
SUBSTR – 문자열 자르기SUBSTR('abcdef', 2, 3) → 'bcd'
INSTR – 특정 문자열 위치 찾기INSTR('abcdefg', 'de') → 4
CONCAT 또는 || – 문자열 연결CONCAT('SQL', 'Dev') → 'SQLDev'
'SQL' || 'Dev' → 'SQLDev'
SUM, AVG, MAX, MIN, COUNTSELECT AVG(salary), MAX(salary), COUNT(*) FROM employees;
NULL 값은 자동으로 제외ROUND, TRUNC, CEIL, FLOOR| 함수 | 설명 | 예시 |
|---|---|---|
ROUND | 반올림 | ROUND(123.456, 1) → 123.5 |
TRUNC | 버림 | TRUNC(123.456, 1) → 123.4 |
CEIL | 올림 | CEIL(1.2) → 2 |
FLOOR | 내림 | FLOOR(1.8) → 1 |
SYSDATE, CURRENT_DATE – 현재 날짜SELECT SYSDATE FROM DUAL;
ADD_MONTHS, MONTHS_BETWEENADD_MONTHS(SYSDATE, 3) → 3개월 뒤 날짜
MONTHS_BETWEEN('2025-12-01', '2025-10-01') → 2
TO_CHAR, TO_DATE – 날짜/문자 변환TO_CHAR(SYSDATE, 'YYYY-MM-DD') → '2025-05-22'
TO_DATE('2025-12-01', 'YYYY-MM-DD')
LAG, LEAD, RANK → 윈도우 분석에 유용LPAD, SUBSTR → ID 포맷/문자 처리ROUND, TRUNC → 금액 처리, 보고서 포맷TO_CHAR, SYSDATE → 날짜 기준 데이터 처리