DataBase/Oracle DB

Do ti 오라클 (07. 다중행 함수와 데이터 그룹화)

ABCD 2023. 3. 10.
📖

다중행

다중행 함수

  • 그룹 함수 or 복수행 함수라고도 불림
  • 여러 행을 바탕으로 하나의 결과 값을 도출해 내기위한 함
  • 여러 행이 입력되어 하나의 행으로 결과가 출력됨
  • 기본적으로 여러 행이 결과로 나올 수 있는 여을 함께 사용 불가
  • 자주사용하는 다중행 함수
    • SUM( ) → 더하기 함수
      SUM([DISTINCT, ALL 중 하나를 선택] '합계를 구할 열 or 연산자 or 함수를 사용한 데이터');
    • COUNT( ) → 데이터 갯수를 추출
      COUNT([DISTINCT, ALL 중 하나를 선택] '갯수를 구할 열 or 연산자 or 함수를 사용한 데이터');
    • MIN( ) , MAX( ) → 최솟값, 최댓값 추출
      MIN([DISTINCT, ALL 중 하나를 선택] '최소를 구할 열 or 연산자 or 함수를 사용한 데이터');
      MAX([DISTINCT, ALL 중 하나를 선택] '최대를 구할 열 or 연산자 or 함수를 사용한 데이터');
    • AVG( ) → 평균 값 추출
      AVG([DISTINCT, ALL 중 하나를 선택] '평균을 구할 열 or 연산자 or 함수를 사용한 데이터');


그룹화

GROUP BY절

  • 사용시 유의점
    • 다중행 함수를 사용하지 않은 일반 열은 GROUP BY 절에 명시하지 않으면 SELECT절에 사용 불가
SELECT '조회할 컬럼들'
FROM '조회할 테이블'
WHERE '조건절'
GROUP BY '그룹화할 컬럼 지정(다중 가능)'
ORDER BY '정렬기준';
  • HAVING 절
    • GROUP BY절에 조건을 줄 때 사용
    • WHERE절과 HAVING절의 쓰임새는 다름!!!
      • WHERE절 → 출력 대상 행을 제한
      • HAVING절 → 그룹화된 대상을 출력에서 제한
      • 실행순서 : WHERE절 → HAVING절
    • 기본형태
      SELECT '조회할 컬럼들'
      FROM '조회할 테이블'
      GROUP BY '그룹화할 컬럼'
      	HAVING '출력 그룹을 제한하는 조건식'
      ORDER BY '정렬기준';
    • 예시 코드
  • GROUP BY절 함수
    • ROLLUP( )

      → 그룹화 할 컬럼을 소그룹 ~ 대구릅 순서로 각 그룹별 결과를 출력하고 마지막에 total 데이터 출력

    • CUBE( )

      → 지정한 모든 열에서 가능한 조합의 결과를 모두 출력

      → n개의 열을 지정하면 2n2^n개 조합이 출력

    • GROUPING SETS( )

      → 지정한 모든 열을 각각 대그룹으로 처리하여 출력

      • 예시

그룹화 함수

  • GROUPING( )
    • 그룹화를 했는지 여부를 반환
    • 한번에 한 컬럼만 지정
    • 0 → 그룹화 함
    • 1 → 그룹화 안함
    • 기본형태
      SELECT '조회할 컬럼들'
      GROUPING('GROUP BY절에 ROLLUP 또는 CUBE에 명시한 그룹화 한 컬럼')
      FROM '조회할 테이블'
      WHERE '조건절'
      GROUP BY ROLLUP( ) or CUBE( )'그룹화할 컬럼 지정'
  • GROUPING_ID( )
    • 그룹화를 했는지 여부를 반환
    • 한번에 여러 컬럼을 지정 가능
    • 기본형태
      SELECT '조회할 컬럼들'
      GROUPING_ID('그룹화 여부를 확인할 컬럼(여러개 지정가능)')
      FROM '조회할 테이블'
      WHERE '조건절'
      GROUP BY ROLLUP( ) or CUBE( )'그룹화할 컬럼 지정'


LISTAGG( )

  • 오라클 11g버전부터 사용 가능
  • 그룹화 데이터를 하나의 열에 가로로 나열하여 출력
SELECT '조회할 컬럼'
LISTAGG( '나열할 컬럼', ['데이터 구분자'] )
WITHIN GROUP( ORDER BY '정렬기준 컬럼' )
FROM '조회할 테이블'
WHERE '조회할 행 조건식';
  • 예시

PIVOT( )

  • 오라클 11g버전부터 사용 가능
  • 기존 테이블 행을 열로 바꿔서 출력
SELECT '조회할 컬럼'
FROM '조회할 테이블'
PIVOT(FOR '컬럼' IN ( '바꿀 데이터' ))
ORDER BY '정렬 할 컬럼'
  • 예시

UNPIVOT( )

  • 오라클 11g버전부터 사용 가능
  • 기존 테이블 열을 행으로 바꿔서 출력

Uploaded by N2T

728x90
반응형

댓글

💲 추천 글