[SQLD] JOIN / 집합연산자 / 그룹함수

hwwwa·2022년 6월 1일
0

🍊 SQLD

목록 보기
11/16

JOIN

  • NATURAL JOIN, USING → 중복된 컬럼이 하나로만 출력됨. 중복된 컬럼이 가장 앞에 등장함. Alias 사용 불가능
  • A LEFT OUTER JOIN B = A.col1 = B.col1(+)
    • ON(조건) 사용 시 조건에 맞는 값들만 가져오고 나머지는 NULL로 채움
  • FROM A, B, C → A, B로 조인한 후 그 결과로 다시 C와 조인
  • CROSS JOIN: Catesian Product 수행
  • 1:M 조인의 M쪽에서 출렫된 행이 하나씩 단일행 함수의 입력값으로 사용 됨
    다중행 함수도 단일행 함수와 동일하게 단일 값만 반환
  • 단일행 함수: SUBSTR, TRIM, ABS, SYSDATE, NVL, …
    다중행 함수: 집계함수, 그룹함수, 윈도우함수

집합연산자

  • UNION: 합집합. 정렬 작업 있음
  • INTERSECT: 교집합. 정렬 작업 있음
  • MINUS(SQL Sever에서는 Except): 차집합. 정렬 작업 있음
  • UNION ALL: 합집합에서 중복 데이터가 두 번 출력됨. 중복 데이터 존재. 정렬 작업 없음. 빠름
    • 컬럼 Alias는 첫 SQL 모듈 기준
  • ~ UNION ALL ~ UNION ~ 수행 시 UNION이 마지막에 수행되므로 중복 제거됨

그룹함수 ⭐️

  • 모두 일반 그룹함수를 사용해 동일한 결과 추출 가능
  • 집계된 레코드에서 집계 대상 컬럼 이외의 GROUP 대상 컬럼의 값은 NULL을 반환
  • ROLLUP: 총합행 존재. 한쪽만 결과가 나와서 계층 구조
    • 일반적인 누적에 대한 총계를 구할 때 편리
    • ROLLUP(A, B)와 ROLLUP(B, A)의 결과는 같지 않음
  • CUBE: 총합행 존재. 양쪽 다 결과가 나옴. 행의 수가 많음
    • Cross-Tab에 대한 Summary를 추출하는데 사용
    • Item Total값과 Column Total값을 나타 낼 수 있음
    • CUBE(A, B)와 CUBE(B, A)의 결과는 같음
  • GROUPINGSETS
    • 특정 항목에 대한 소계 계산. 총합행 없음
    • 각각의 컬럼으로 GROUP BY한 값을 UNION ALL 한 것과 동일
    • 함수 인자 컬럼의 순서는 결과에 영향을 미치지 않음
  • GROUPING
    • ROLLUP, CUBE에 모두 사용 가능
    • 그룹함수에 의해 소계나 총합 등 집계된 데이터일 경우 1을 반환, 아니면 0을 반환

0개의 댓글