SQLD 함수

Soondol·2024년 5월 13일

함수

정의

  • input value와 output value의 관계를 정의한 객체
  • from 절을 제외한 모든 절에서 사용 가능

기능

  • 데이터의 계산 수행
  • 개별 데이터 항목을 수정
  • 표시할 날짜 및 숫자 형식을 지정
  • 열 데이터의 유형(data type)을 반환

종류 (입력값의 수에 따라)

  • 단일행 함수 : input : output = 1 : 1
  • 복수행 함수 : 여러건의 데이터를 동시에 입력 받아서 하나의 요악값을 리턴 (그룹함수, 집계함수 라고도 함)

종류 (입/출력값의 타입에 따른 함수 분류)

문자형 함수

  • 문자열 결합, 추출, 삭제 등을 수행
  • 단일행 함수 형태
  • 함수명함수기능사용예시출력기타
    LOWER(대상)문자열을 소문자로LOWER('ABC')abc
    UPPER(대상)문자열을 대문자로UPPER('abc')ABC
    SUBSTR(대상, m, n)문자열 중 m위치에서 n개의 문자열 추출SUBSTR('ABCED', 2, 3)BCDn이 없는경우 끝까지 추출
    INSTR(대상, 찾을 문자열)대상에서 찾을 문자열 위치 반환INSTR('A#B#C#', '#', 3, 2)6문자열의 3번째부터 두번째 #이 발견된 위치 반환
    LTRIM(대상, 삭제 문자열)문자열 중 특정 문자열을 왼쪽에서 삭제LTRIM('AABABAA', 'A')BABAA삭제 문자열 생략 시 공백 삭제
    RTRIM(대상, 삭제 문자열)문자열 중 특정 문자열을 오른쪽에서 삭제RTRIM('AABABAA'), 'A')AABAB삭제 문자열 생략 시 공백 삭제
    TRIM(대상)문자열 중 특정 문자열을 양쪽에서 삭제TRIM(' ABCDE')ABCEDoracle TRIM은 공백만 삭제 가능
    LPAD(대상, n, 문자열)대상 왼쪽에 문자열을 추가하여 총 n의 길이 리턴LPAD('ABC', 5, '*')**ABC
    RPAD(대상, n, 문자열)대상 오른쪽에 문자열을 추가하여 총 n의 길이 리턴RPAD('ABC', 5, '*')ABC**
    CONCAT(대상1, 대상2)문자열 결합CONCAT('AB', 'CD')ABCD2개의 인수만 전달 가능
    LENGTH(대상)문자열 길이LENGTH('ABCDE')5
    REPLACE(대상, 찾을문자열, 바꿀문자열)문자열 치환 및 삭제REPLACE('ABBA', 'AB', 'ab')abBa3번째 인수를 생략하거나 빈 문자열 전달 시 차증ㄹ 문자열 삭제
    TRANSLATE(대상, 찾을문자열, 바꿀문자열)글자를 1대1로 치환TRANSLATE('ABBA', 'AB', 'ab')abba매칭되는 글자끼리 치환, 바꿀 문자열 생략 불가

숫자형 함수

  • 숫자를 입력하면 숫자 값을 반환

  • 단일행 함수 형태의 숫자함수

  • 함수명함수기능사용예시출력기타
    ABS(숫자)절대값 반환ABS(-1.5)1.5
    ROUND(숫자, 자리수)소수점 특정 자리에서 반올림ROUND(123.456, 2)123.46자리수가 음수이면 정수자리에서 반올림
    TRUNC(숫자, 자리수)소수점 특정 자리에서 버림TRUNC(123.456.2)123.45
    SIGN(숫자)숫자가 양수면 1, 음수면 -1, 0이면 0반환SIGN(-100)-1
    FLOOR(숫자)작거나 같은 최대 정수 리턴FLOOR(3.5)3
    CEIL(숫자)크거나 같은 최소 정수 리턴CEIL(3.5)4
    MOD(숫자1, 숫자2)숫자1을 숫자2로 나누어 나머지 반환MOD(7,2)1
    POWER(m, n)m의 n거듭제곱POWER(2, 4)16
    SQRT(숫자)루트값 리턴SQRT(16)4

날짜형 함수

  • 날짜 연산과 관련된 함수
  • 함수명함수기능사용예시출력기타
    SYSDATE현재 날짜와 시간 리턴SYSDATE2024/05/13 18:23:14날짜 출력 형식에 따라 다르게 출력됨
    CURRENT_DATE현재 날짜 리턴CURRENT_DATE2024/05/13날짜 출력 형식에 따라 다르게 출력됨
    CURRENT_TIMESTAMP현재 타임스탬프 리턴CURRENT_TIMESTAMP2024/05/13 18:23:14 +09:00
    ADD_MONTHS(날짜, n)날짜에서 n개월 후 날짜 리턴ADD_MONTHS(SYSDATE, 3)2024/08/13 18:23:14n이 음수인 경우 n개월 이전 날짜 리턴
    LAST_DAY(날짜)주워진 월의 마지막 날짜 리턴LAST_DAY(SYSDATE)2024/05/31 18:23:14
    NEXT_DAY(날짜, n)주어진 날짜 이후 지정된 요일의 첫 번째 날짜 리턴NEXT_DAY(SYSDATE, 1)2024/05/19 18:23:141(일요일), 2(월요일), ... 7(토요일)
    ROUND(날짜, 자리수)날짜 반올림ROUND(SYSDATE, 'MONTH')2024-05-01 0:00월 이전자리에서 반올림
    TRUNC(날짜, 자리수)날짜 버림TRUNC(SYSDATE, 'MONTH')2024-05-01 0:00월 이전자리에서 버림

변환 함수

  • 값의 데이터 타입을 변환
  • 함수명함수기능사용예시출력기타
    TO_NUMBER(대상)숫자 타입으로 변경하여 리턴TO_NUMBER('100')100문자 '100'을 숫자 100으로 리턴
    TO_CHAR(대상, 포맷)날짜포맷 변경TO_CHAR(SYSDATE, 'MM/DD-YYYY')05/13-2024
    TO_CHAR(대상, 포맷)숫자의 포맷 변경TO_CHAR(9000, '9,999)9,000천단위 구분기호 생성(문자타입으로 리턴)
    TO_DATE(문자, 포맷)주어진 문자를 포맷 형식에 맞게 읽어 날짜로 리턴TO_DATE('2024/05/13', 'YYYY/MM/DD')2024/05/13 00:00:00날짜로 리턴됨
    CAST(대상 AS 데이터타입)대상을 주어진 데이터타입으로 변환CAST('100' AS int100문자 '100'을 숫자 100으로 리턴

그룹 함수

  • 다중행 함수
  • 여러 값이 input값으로 들어가서 하나의 요약된 값으로 리턴
  • group by와 함께 자주 사용됨
  • 함수명함수기능사용예시출력기타
    COUNT(대상)행의 수 리턴NULL 무시하고 연산
    SUM총 합 리턴NULL 무시하고 연산
    AVG평균 리턴NULL 무시하고 연산
    MIN최솟값 리턴NULL 무시하고 연산
    MAX최댓값 리턴NULL 무시하고 연산
    VARIANCE분산 리턴NULL 무시하고 연산
    STDDEV표준편차 리턴NULL 무시하고 연산

일반함수

  • 기타함수 (NULL 치환 함수 등)
  • 함수명함수기능사용예시출력기타
    DECODE(대상, 값1, 리턴1, 값2, 리턴2....)대상이 값1이면 리턴1, 값2이면 리턴2 ....DECODE(DEPTNO, 10 ,A, BA 또는 B대소비교에 따른 치환 불가, 리턴 생략시 null 리턴
    NVL(대상, 치환값)대상이 null이면 치환값으로 치환하여 리턴NVL(COMM, 0)COMM 또는 0 리턴
    NVL2(대상, 치환값1, 치환값2)대상이 null이면 치환값 2로 치환, null이 아니면 치환값 1로 치환NVL2(COMM, COMM+1, 0)COMM+1 또는 0 리턴
    COALESCE(대상1, 대상2, ...)대상1이 null이면 대상2, 대상2가 null이면 대상3 ... 모두가 null이면 그외 리턴값이 리턴COALESCE(DEPTNO1, DEPTNO2, 0)DEPTNO1, DEPTNO2중 null아닌값 출력, 둘다 null인경우 마지막 인수값 0 출력
    CASE문조건별 치환 및 연산 수행CASE WHEN SAL < 2000 THEN 'C' ELSE 'A' END AS SAL_GRADE

홍쌤의 데이터랩
SQLD 2과목 PART1. SQL 기본 완벽 정리 (2024년 신유형 반영) 강의에 대해
공부 및 개인적으로 정리한 글 입니다.

0개의 댓글