본문 바로가기

Data Literacy/SQL

Chapter 1. 데이터 조회, 필터링(9) - BETWEEN

 

 

이번 아티클에서는 BETWEEN 연산자에 대해서 살펴보겠습니다. BETWEEN은 단어에서도 연상할 수 있듯이, '어떤 특정한 범위에 들어가는 값'을 출력하는 연산자입니다. 예를 들어 WHERE COLUMN_NAME BETWEEN X AND Y와 같은 형태가 되는 것이지요. 

 

[BETWEEN X AND Y]는 SQL에서 [X 이상이며 Y이하인 값]을 의미하게 됩니다. 이를 풀어서 WHERE 키워드 조건으로 풀어본다면 [COLUMN_NAME >= X AND COLUMN_NAME <= Y]가 됩니다. 

 

 

 select *
   from table_name
  where column_name
between value_x and value y
-- column_name >= x and column_name <= y와 같다

 

여기서 BETWEEN에 NOT을 붙여서 사용도 가능합니다. [BETWEEN X AND Y]가 X 이상, Y 이하의 값들이라고 정의했으니 [NOT BETWEEN X AND Y]은 이 값들이 제외되는 값으로 생각해주면 됩니다. 그럼 X 미만, Y 초과를 의미하게 되겠죠. 

 

     select *
       from table_name
      where column_name
not between value_x and value y
-- column_name < x or column_name > y와 같다

 

 


 

Q. PAYMENT테이블에서 지불 금액(AMOUNT)이 8달러 이상, 9달러 이하인 고객의 CUSTOMER_ID, PAYMENT_ID, AMOUNT를 출력해 주세요.

 

select customer_id ,
       payment_id ,
       amount 
  from payment p 
 where amount between 8 and 9

 

 

 

 

 

Q. PAYMENT테이블에서 지불 금액(AMOUNT)이 8달러 이상, 9달러 이하인 고객을 제외한 나머지 모든 고객의  CUSTOMER_ID, PAYMENT_ID, AMOUNT를 출력해 주세요.

 

select customer_id ,
       payment_id ,
       amount 
  from payment p 
 where amount not between 8 and 9

 

 

 

 

Q. PAYMENT 테이블에서, 결제 일자가 2007년 2월 7일부터 2007년 2월 15일인 고객을 찾아 CUSTOMER_ID, PAYMENT_ID, AMOUNT, PAYMENT_DATE를 출력해 주세요

 

select customer_id , 
       payment_id , 
       amount , 
       payment_date 
  from payment p 
 where cast(payment_date as date) between '2007-02-07' and '2007-02-15'

 

 

 

※위 예제에서 PAYMENT_DATE가 시간을 포함해서 출력되고 있습니다. to_char 함수를 이용해서 날짜만이 표시되도록 바꾸어 쿼리를 날려봅시다. 

 

select customer_id , 
       payment_id , 
       amount , 
       to_char(payment_date, 'yyyy-mm-dd') as new_date
  from payment p 
 where to_char(payment_date, 'yyyy-mm-dd') between '2007-02-07' and '2007-02-15'

 

 

ㅇㅇㅇ