NVL(컬럼, 대체값)
| 조건 | 반환값 |
|---|---|
| 컬럼이 NULL | 대체값 |
| 컬럼이 NULL이 아님 | 원래 컬럼값 |
NVL2(컬럼, NULL이 아닐 때 값, NULL일 때 값)
| 조건 | 반환값 |
|---|---|
| 컬럼이 NULL이 아님 | 두 번째 인수 |
| 컬럼이 NULL | 세 번째 인수 |
모든 인수가 NULL이면 NULL을 반환COALESCE(값1, 값2, 값3,..)
NULLIF(값1, 값2)
| 조건 | 반환값 |
|---|---|
| 값1 = 값2 | NULL |
| 값 ≠ 값2 | 값1 |
CASE 컬럼
WHEN 값1 THEN 결과1
WHEN 값2 THEN 결과2
...
ELSE 기본값
END
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 기본값
END
Oracle 전용 함수로 CASE와 유사한 역할을 함
특정 값과 비교해 일치하는 결과값을 반환
비교값이 1이면 결과 1, 비교값2면 2를 반환
일치 없으면 기본값 반환
기본값 생략 시 NULL을 반환
DECODE는 등호(=) 비교만 가능
여러 행의 값을 하나로 요약하는 함수
SELECT·HAVING·ORDER BY에서 사용 가능(WHERE에서는 불가)
Group BY없이 사용하면 테이블 전체가 한 그룹이 됨
대부분 NULL을 제외하고 계산(COUNT(*) 제외)
| 함수 | 기능 | NULL 처리 |
|---|---|---|
COUNT(*) | 전체 행 수 계산 | NULL 포함해서 행 자체를 셈 |
COUNT(컬럼) | 해당 컬럼의 값 개수 계산 | NULL 제외 |
SUM(컬럼) | 합계 계산 | NULL 제외 |
AVG(컬럼) | 평균 계산 | NULL 제외 |
MAX(컬럼) | 최댓값 | NULL 제외 |
MIN(컬럼) | 최솟값 | NULL 제외 |
COUNT(*)
| 입력 상황 | 결과 |
|---|---|
| NULL 포함 모든 행 | 행 자체를 카운트 |
| 조건에 맞는 행 0건 | 0 반환(NULL 아님) |
COUNT(컬럼)
| 컬럼 값 | 처리 |
|---|---|
| NULL이 아닌 값 | 카운트 포함 |
| NULL | 카운트 제외 |
| 모든 값이 NULL | 0 반환 |
COUNT(DISTINCT 컬럼)
| 컬럼 값 | 처리 |
|---|---|
| NULL이 아닌 값 | 중복 제거 후 카운트 |
| NULL | 카운트 제외 |
| 모든 값이 NULL | 0 반환 |
NVL(컬럼, 0)을 함께 사용SUM(컬럼)
AVG(컬럼)
지정한 컬럼 값이 같은 행끼리 묶어 그룹을 만듦
집계함수와 함께 그룹별 결과를 구함
WHERE 다음, HAVING 이전에 위치
SELECT 컬럼1, 집계함수(컬럼2)
FROM 테이블명
WHERE 조건식
GROUP BY 컬럼1
ORDER BY 컬럼1;