본문 바로가기

💻 SQL/🔎기초 SQL

[칼퇴족 김대리는 알고 나만 모르는 SQL 기초편] DAY 11. 하위 쿼리

DAY 11. 하위 쿼리

  • 하위쿼리란 SQL문장 안에 포함되는 또 다른 SQL문장을 의미
  • 두 번 이상의 질의를 통해 얻을 수 있는 결과를 한 번의 질의로 해결할 수 있어, 복잡한 SQL 문장도 간단히 만들 수 있다
  • 하위 쿼리 개념을 응용하면 훨씬 효율적이면서 오류를 줄일 수 있고, 빠른 처리 속도를 SQL문장을 만들 수 있음

💡 FROM절의 하위 쿼리

  • 조건에 맞는 대상자 선정 후 요약할 때
    • 하위 쿼리를 작성한 후 테이블 별칭을 주지 않으면 에러가 발생한다. 테이블 별칭을 줄 때 AS키워드를 사용해도 되고 생략해도 되지만, DBMS 중 ORACLE은 AS키워드를 생략해야한다.
    SELECT 열이름1, 열이름2 FROM (SELECT * FROM 테이블명 WHERE 조건절) (AS) 별칭 WHERE 조건절;
  • 테이블을 조인할 때
    • 테이블을 조인할 때 필요한 정보만 조인할 수 있는 방법
    SELECT 별칭1.열이름1, 별칭2.열이름2 FROM 테이블명1 (AS) 별칭1  LEFT OUTER JOIN (SELECT 열이름1, 열이름2 FROM 테이블명2 WHERE 조건절) (AS) 별칭2   ON 별칭1.KEY=별칭2.KEY;
    ※데이터 분석 시 키 값이 되는 열들은 중복 없이 나열하고, 좀 더 자세히 분석하려는 대상은 옆으로 붙이는 것이 매우 중요하다.
  • ※오류 발생 확률을 낮추기 위해 중복을 제거한 형태의 테이블을 만든 후 조인해야한다.

💡 WHERE 조건절의 하위 쿼리

  • IN을 사용한 WHERE 조건절의 하위 쿼리
    • 열 이름 뒤에 IN을 사용하여 필요한 데이터만 가져올 수 있는 방법
    • 단일 결과 값일 때는 ‘=’을 사용할 수도 있지만 IN연산자가 포괄적 기능을 하기 때문에 열 이름 다음에 IN을 사용한다고 외우면 된다
    SELECT 열이름1, 열이름2 FROM 테이블명1 WHERE 열이름 IN (SELECT 열이름 FROM 테이블명2 WHERE 조건절);
    • 전체 모집단에서 특정 세그먼트만 추출할 때 WHERE조건절의 하위쿼리가 유용하게 사용된다. 즉, 테이블1에서 테이블2의 결과를 출력하고 싶을 때 사용된다