공통 지원 함수(Oracle, MySQL, PostgreSQL)

✒️ 2025-06-05 18:12 내용 수정



1. COALESCE

COALESCE(value1, value2, ...)
-- 급여 중 null값이 있을 경우 0으로 처리
SELECT COALESCE(salary, 0) FROM employees;

2. CAST

CAST(대상 AS 변환한타입)

-- grade라는 속성이 TEXT라고 가정할 때
SELECT (grade AS INTEGER) FROM students;

3. LAG

LAG(표현식 [, 오프셋 [, 기본값]]) OVER (
  [PARTITION BY 파티션_기준]
  ORDER BY 정렬_기준
)

-- 컬럼 기준으로 사용 시 단순화한 표현
LAG(컬럼이름1) OVER(
	PARTITION BY 컬럼이름
	ORDER BY 컬럼이름2
)

예시

SELECT history_id, member_id, book_title, borrow_date,
LAG(borrow_date) OVER (
  PARTITION BY member_id
  ORDER BY borrow_date
) AS prev_borrow
FROM borrow_history;

sql_lag 1.png

SELECT history_id, member_id, book_title, borrow_date,
borrow_date - LAG(borrow_date) OVER (
	PARTITION BY member_id
	ORDER BY member_id ASC, borrow_date ASC
) AS borrow_term
FROM borrow_history;

sql_lag 2.png


4. ROW_NUMBER

ROW_NUMBER() OVER (
	[PARTITION BY 표현식, ...]
	ORDER BY 컬럼이름 정렬순서
)
SELECT
	ROW_NUMBER() OVER (ORDER BY register_date DESC) as row_num,
	username
FROM users;