07_SUBQUERY

Hyunny ·2023년 5월 19일
0

SQL

목록 보기
7/11
post-thumbnail

📌 SUBQUERY (서브쿼리)

하나의 SQL문 안에 포함된 또다른 SQL(SELECT)문
메인쿼리(기존쿼리)를 위해 보조 역할을 하는 쿼리문
SELECT, FROM, WHERE, HAVING 절에서 사용가능


🔉 서브 쿼리 유형

단일행 (+단일열) 서브쿼리 : 서브쿼리의 조회 결과 값의 개수가 1개일 때
다중행 (+단일열) 서브쿼리 : 서브쿼리의 조회 결과 값의 개수가 여러개일 때
다중열 서브쿼리 : 서브쿼리의 SELECT절에 나열된 항목수가 여러개 일 때
다중행 다중열 서브쿼리 : 조회 결과 행 수와 열 수가 여러개일 때
상관 서브쿼리 : 서브쿼리가 만든 결과 값을 메일 쿼리가 비교 연산할 때
메인 쿼리 테이블의 값이 변경되면 서브쿼리의 결과값도 바뀌는 서브쿼리
스칼라 서브쿼리 : 상관 쿼리이면서 결과 값이 하나인 서브쿼리


📃 단일행 서브쿼리 (SINGLE ROW SUBQUERY)

  • 서브쿼리의 조회 결과 값의 개수가 1개인 서브쿼리
  • 단일행 서브쿼리 앞에는 비교 연산자 사용
  • <, >, <=, >=, =,!=,^=

✍️[단일행 서브쿼리 예시]


📃 다중행 서브쿼리 (MULTI ROW SUBQUERY)

  • 서브쿼리의 조회 결과 값의 개수가 여러행일 때
  • 다중행 서브쿼리 앞에는 IN/NOT IN 사용

✍️ [다중행 서브쿼리 예시]


📃 다중열 서브쿼리

  • (단일행 = 결과값은 한 행)
  • 서브쿼리 SELECT절에 나열된 컬럼 수가 여러개 일 때

✍️ [다중열 서브쿼리 예시]


📃 다중행 다중열 서브쿼리

  • 서브쿼리 조회 결과 행 수와 열 수가 여러개일 때

✍️ [다중행 다중열 서브쿼리 예시]


📃 상[호연]관 서브쿼리

  • 메인쿼리 1행씩 우선 해석, 서브쿼리 나중에 해석
  • 상관 쿼리는 메인쿼리가 사용하는 테이블 값을 서브쿼리가 이용해서 결과를 만듦
  • 메인쿼리의 테이블 값이 변경 되면 서브쿼리의 결과 값도 바뀌게 되는 구조
  • 상관쿼리는 먼저 메인쿼리를 한 행 조회하고 해당 행이 서브쿼리의 조건을 충족하는지 확인하여 SELECT를 진행함

✍️ [상관 서브쿼리 예시]


📃 스칼라 서브쿼리

  • SELECT 절에 사용되는 서브쿼리 결과로 1행(단일행) 만 반환
  • SELECT 절에 작성하는 단일행 서브쿼리

✍️ [스칼라 서브쿼리 예시]


📃 인라인 뷰

  • FROM절에서 서브쿼리를 사용하는 경우로
  • 서브쿼리가 만든 결과의 집합 (RESULT-SET) 을 테이블 대신에 사용한다.
  • 인라인 뷰를 활용한 TOP-N 분석

✍️ [인라인 뷰 예시]


📃 WITH

  • 서브쿼리에 이름을 붙여주고 사용 시 이름을 사용하게 함
  • 인라인 뷰로 사용될 서브쿼리에 주로 사용됨
  • 실행 속도가 빨라진다는 장점

✍️ [WITH 예시]


📃 RANK() OVER / DENSE_RANK() OVER

  • RANK() OVER : 동일한 순위 이후의 등수를 동일한 인원 수 만큼 건너뛰고 순위 계산
    EX) 공동 1위가 2명이면 다음 순위는 2위가 아니라 3위
  • DENSE_RANK()OVER : 동일한 순위 이후의 등수를 이후의 순위로 계산
    EX) 공동 1위가 2명이어도 다음 순위는 2위
profile
개발 learning ... 📝

0개의 댓글