SELECT 심화(2)

이강용·4일 전

SQLD

목록 보기
9/11

NULL 관련 함수

NULL 관련 함수 특징

  • NULL을 그대로 연산하면 결과가 NULL이 됨
  • NULL 관련 함수는 NULL을 다른 값으로 대체하거나 분기 처리

NVL/NVL2

NVL

  • NULL이면 대체값, NULL이 아니면 원래 값을 반환
  • 컬럼과 대체값의 타입이 일치해야 함
  • 타입이 다르면 오류가 발생

NVL(컬럼, 대체값)

조건반환값
컬럼이 NULL대체값
컬럼이 NULL이 아님원래 컬럼값

NVL2

  • NULL 여부에 따라 두 값 중 하나를 반환(NVL 확장)
  • 두 번째 · 세 번째 인수의 타입이 일치해야 함
  • NVL2는 Oracle 전용

NVL2(컬럼, NULL이 아닐 때 값, NULL일 때 값)

조건반환값
컬럼이 NULL이 아님두 번째 인수
컬럼이 NULL세 번째 인수

COALESCE

  • 인수 목록에서 NULL이 아닌 첫 번째 값을 반환
  • 모든 인수가 NULL이면 NULL을 반환
  • ANSI 표준이므로 모든 DBMS에서 사용 가능
  • 인수가 2개면 NVL과 동일하게 동작

COALESCE(값1, 값2, 값3,..)

NULLIF

  • 두 값이 같으면 NULL, 다르면 첫 번째 값을 반환
  • 특정 값을 NULL로 처리할 때 사용
  • 두 인수의 타입이 일치해야 함

NULLIF(값1, 값2)

조건반환값
값1 = 값2NULL
값 ≠ 값2값1

CASE/DECODE

CASE

  • 조건에 따라 다른 값을 반환하는 표현식
  • IF-THEN-ELSE와 같은 역할을 한다
  • ANSI 표준으로 대부분의 DBMS에서 지원
  • SELECT·WHERE·ORDER BY 등에서 사용 가능

단순 CASE(Simple CASE)

  • 특정 컬럼·값을 기준으로 동일 여부를 비교
  • 컬럼 값이 WHEN 값과 일치하면 THEN 결과 반환
  • 일치하는 값이 없으면 ELSE를 반환
  • ELSE 생략 시 NULL을 반환

CASE 컬럼
WHEN 값1 THEN 결과1
WHEN 값2 THEN 결과2
...
ELSE 기본값
END

검색 CASE(Searched CASE)

  • WHEN 절에 조건식을 직접 작성하는 방식
  • 단순CASE보다 유연한 조건을 표현
  • 범위·복합 조건 표현이 가능
  • 여러 조건이 참이면 먼저 일치한 WHEN 결과를 반환
  • ELSE 생략 시 NULL을 반환

CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 기본값
END

DECODE 함수

  • Oracle 전용 함수로 CASE와 유사한 역할을 함

  • 특정 값과 비교해 일치하는 결과값을 반환

  • 비교값이 1이면 결과 1, 비교값2면 2를 반환

  • 일치 없으면 기본값 반환

  • 기본값 생략 시 NULL을 반환

  • DECODE는 등호(=) 비교만 가능

    집계함수(Aggregate Function)

    집계함수의 개념

  • 여러 행의 값을 하나로 요약하는 함수

  • 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을 반환(NULL X)

COUNT(*)

입력 상황결과
NULL 포함 모든 행행 자체를 카운트
조건에 맞는 행 0건0 반환(NULL 아님)

COUNT(컬럼)

  • NULL이 아닌 값의 행 수를 반환

COUNT(컬럼)

컬럼 값처리
NULL이 아닌 값카운트 포함
NULL카운트 제외
모든 값이 NULL0 반환

COUNT(DISTINCT 컬럼)

  • NULL 제외 후 고유값의 수를 반환

COUNT(DISTINCT 컬럼)

컬럼 값처리
NULL이 아닌 값중복 제거 후 카운트
NULL카운트 제외
모든 값이 NULL0 반환

SUM/AVG

  • SUM은 합계, AVG는 평균을 반환
  • 두 함수 모두 NULL을 제외하고 계산
  • NULL을 0으로 처리하려면 NVL(컬럼, 0)을 함께 사용

SUM(컬럼)
AVG(컬럼)

GROUP BY

  • 지정한 컬럼 값이 같은 행끼리 묶어 그룹을 만듦

  • 집계함수와 함께 그룹별 결과를 구함

  • WHERE 다음, HAVING 이전에 위치

    SELECT 컬럼1, 집계함수(컬럼2)
    FROM 테이블명
    WHERE 조건식
    GROUP BY 컬럼1
    ORDER BY 컬럼1;

profile
HW + SW = 1

0개의 댓글