자주 쓰는 SQL 함수 정리 - 윈도우 함수, 문자열 함수, 집계 함수, 날짜 함수

박우진·2025년 5월 22일

SQLD

목록 보기
8/12

1. 윈도우 함수 (Window Functions)

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... 순번 부여

SQL-순위-함수-정리


2. 문자열 함수 (String Functions)

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'

3. 숫자/집계 함수 (Numeric & Aggregate)

SUM, AVG, MAX, MIN, COUNT

SELECT 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

4. 날짜 함수 (Date Functions)

SYSDATE, CURRENT_DATE – 현재 날짜

SELECT SYSDATE FROM DUAL;

ADD_MONTHS, MONTHS_BETWEEN

ADD_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, SUBSTRID 포맷/문자 처리
  • ROUND, TRUNC금액 처리, 보고서 포맷
  • TO_CHAR, SYSDATE날짜 기준 데이터 처리

0개의 댓글