sqld 공부 2

ejoo·2024년 5월 30일

그룹 함수

GROUP BY절에 의해 그룹별 연산 결과 리턴
동시에 출력하는 합집합

  1. GROUPING SETS (A, B, …) : A별, B별
  2. ROLLUP(A, B) : A별, (A,B)별, 전체
  3. CUBE(A, B) : A 별, B 별, (A,B)별, 전체

윈도우 함수

LAG LEAD SUMAVG MIN MAX COUNT RANK
윈도우 함수 OVER ( 범위)
( PARTITION BY A ): 총 데이터 수 변화 없이 그룹연산 수행할 GROUP BY 컬럼
ORDER BY 를 PARTITON BY 전에 사용 불가
( ORDER BY A ASC | DESC ): rank, 누적값 출력 시 사용
( ROWS | RANGE BETWEEN A AND B ) 연산 범위 설정, ORDER BY 필수

  • ROWS : 값이 같더라도 각 행씩 연산
  • RANGE : 같은 값의 경우 하나의 RANGE 로 묶어서 동시 연산(DEFAULT)
  • BETWEEN A AND B
    A) 시작점 정의
    - CURRENT ROW : 현재행부터
    - UNBOUNDED PRECEDING : 처음부터(DEFAULT)
    - N PRECEDING : -N 부터
    B) 마지막 시점 정의
    - CURRENT ROW : 현재행까지(DEFAULT)
    - UNBOUNDED FOLLOWING : 마지막까지
    - N FOLLOWING : +N 까지

RANK 함수

RANK WITHIN GROUP

  • 특정값에 대한 순위 확인 (일반 함수)

RANK() OVER() = 1224567

  • 전체 / 특정 그룹 중 값의 순위 확인
  • 순위를 구할 대상을 ORDER BY절에 명시 그룹 내 순위를 구할 때 PARTITION BY 필수
    DENSE_RANK() OVER() = 1223456
  • 누적순위
  • 값이 같을 때 동일한 순위를 부여한 후 다음 순위가 바로 이어짐 (1등이 5명이고 다음은 2등)
    ROW_NUMBER() OVER() = 1234567
  • 연속된 행 번호 나열한대로의 순서 값 리턴

LAG() | LEAD() OVER()

  • 행 순서대로 - 이전 값 | 이후 값 가져오기 ORDER BY 필수

FIRST_VALUE() | LAST_VALUE() OVER()

  • 정렬 순서대로 정해진 범위에서의 처음 값, 마지막 값 출력
  • 순서와 범위 정의에 따라 최솟값과 최댓값 리턴 가능

NTILE() OVER()

  • 그룹 번호 리턴
  • ORDER BY 필수 특정 그룹을 원하는 수 만큼 분리 가능

RATIO_TO_REPORT() OVER()

  • 각 값의 비율 리턴

CUME_DIST() OVER()

  • 각 값의 누적 비율 리턴
  • ORDER BY 필수

PERCENT_RANK() OVER()

  • 분위 수 리턴
  • ORDER BY 필수
  • 0 에서 1 사이 내 위치

ROWNUM: 출력된 데이터 기준으로 행 번호 부여 1234567
FETCH: 출력될 행의 수 제한

계층형 질의

START WITH : 데이터를 출력할 시작 지정하는 조건

CONNECT BY PRIOR : 행을 이어나갈 조건

데이터 정규화

제 1정규화: 컬럼, 로우가 유일(원자성)
제 2정규화: 완전함수종속 (일반 속성들은 모두 기본키를 참조해야 함)
제 3정규화: 이행적 함수 종속 (일반 속성 간 참조하면 안됨)

profile
안녕하세요

0개의 댓글