Challenge & Study 데이터 분석

Postgre SQL - IN 연산자 본문

데이터 분석 - Postgre SQL/정리하자

Postgre SQL - IN 연산자

Factful_Day 2020. 7. 9. 23:38

# 구동 환경 : Postgre SQL 12.3 설치 -> pgAdmin4에서 아래 DB 연동 -> DBeaver 7.1.2 버전에서 코딩 진행

# 활용하는 DB = dvdrental.tar

(Link : http://www.postgresqltutorial.com/wp-content/uploads/2017/10/dvdrental.zip)

IN 연산자는 특정 집합(컬럼 혹은 리스트)에서 특정 집합 혹은 리스트가 존재하는지 판단하는 연산자입니다.

SELECT 
         CUSTOMER_ID  -- 컬럼 선택
        ,RENTAL_ID    -- 컬럼 선택
        ,RETURN_DATE  -- 컬럼 선택
  FROM   RENTAL       -- 테이블 선택
 WHERE
         CUSTOMER_ID IN (1,2) -- CUSTOMER_ID가 1 혹은 2인 행을 출력
ORDER BY RETURN_DATE DESC;    -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력

결과가 잘 출력되었습니다.

이번에는 동일한 결과를 IN 대신 OR를 활용해 확인해보겠습니다.

SELECT 
         CUSTOMER_ID  -- 컬럼 선택
        ,RENTAL_ID    -- 컬럼 선택
        ,RETURN_DATE  -- 컬럼 선택
  FROM   RENTAL       -- 테이블 선택
 WHERE
         CUSTOMER_ID = 1   -- CUSTOMER_ID가 1
      OR CUSTOMER_ID = 2   -- 혹은 2인 행을 출력
ORDER BY RETURN_DATE DESC; -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력

동일한 결과가 나왔습니다.

이번에는 NOT을 활용하여 다른 방식으로 진행해보겠습니다.

SELECT 
         CUSTOMER_ID  -- 컬럼 선택
        ,RENTAL_ID    -- 컬럼 선택
        ,RETURN_DATE  -- 컬럼 선택
  FROM   RENTAL       -- 테이블 선택
 WHERE
         CUSTOMER_ID NOT IN (1,2) -- CUSTOMER_ID가 1이 아니고 2도 아닌 행을 출력
ORDER BY RETURN_DATE DESC;        -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력

위 결과를 IN 연산자와 다른 방식으로 다시 진행해보겠습니다.

SELECT 
         CUSTOMER_ID  -- 컬럼 선택
        ,RENTAL_ID    -- 컬럼 선택
        ,RETURN_DATE  -- 컬럼 선택
  FROM   RENTAL       -- 테이블 선택
 WHERE
         CUSTOMER_ID <> 1  -- CUSTOMER_ID가 1이 아니고 
     AND CUSTOMER_ID <> 2  -- 2도 아닌 행을 출력
ORDER BY RETURN_DATE DESC; -- 그 결과를 RETURN_DATE 컬럼 내림차순으로 출력

동일한 결과가 출력되었습니다.

이번에는 서브 쿼리를 활용하여 진행해보겠습니다.

SELECT 
      CUSTOMER_ID -- 컬럼 선택
     ,RETURN_DATE -- 컬럼 선택
  FROM 
      RENTAL      -- 테이블 선택
 WHERE
  CAST (RETURN_DATE AS DATE) = '2005-05-27'; -- RETURN_DATE가 2005년 5월 27일인 CUSTOMER_ID를 출력

위 조건을 가지고 IN연산자를 활용해보겠습니다. 

 SELECT 
       FIRST_NAME
      ,LAST_NAME 
  FROM 
       CUSTOMER
 WHERE CUSTOMER_ID IN( -- return_date가 2005년 5월 27일 CUSTOMER_ID의
	SELECT             -- FIRST_NAME과 LAST_NAME을 출력
	      CUSTOMER_ID 
	  FROM 
	      RENTAL
	 WHERE
          CAST (RETURN_DATE AS DATE) = '2005-05-27'); 
          -- RETURN_DATE가 2005년 5월 27일인 CUSTOMER_ID를 출력

이런식으로 다른 테이블에 있는 값도 조건을 주고 불러올 수 있습니다,

 

다음에는 BETWEEN 연산자에 대해서 보도록 하겠습니다.

'데이터 분석 - Postgre SQL > 정리하자' 카테고리의 다른 글

Postgre SQL - LIKE 연산자  (0) 2020.07.10
Postgre SQL - BETWEEN 연산자  (0) 2020.07.10
Postgre SQL - Fetch 절  (0) 2020.07.06
Postgre SQL - Limit 절  (0) 2020.07.06
Postgre SQL - Where 절  (0) 2020.07.06