본문 바로가기

TOOLS/My SQL

[내만내뜯SQL] W3Schools DB 활용한 My SQL 쿼리문 - 2

728x90
728x90

오늘은 CASE 조건 분류 파트를 공부했다.

CASE로 열고,
WHEN
THEN
ELSE
END로 마무리.

스터디 후 냅다 W3Schools.com 켜기.
배운 게 있다면 바로 바로 활용하자🔥


-


구매 수량에 따라 경품을 증정하는 프로모션을 진행한다고 가정해보자.
100개 이상은 '경품 1', 50개 이상은 '경품 2'를 증정하며, 경품 배송을 위한 고객 info도 함께 확인이 필요하다.
이때 CASE 구문을 활용하여 DB를 추출할 수 있다.

나처럼 My SQL을 사용한다면, IF로도 추출이 가능한데
IF(조건, 조건이 TRUE일대 반환 값, 조건이 FALSE 일때 반환 값)
으로 쿼리문을 작성해주면 된다.

#내만내뜯SQL -2

SELECT D.OrderID,
       O.CustomerID, 
       C.CustomerName, 
       C.Address, 
       C.City, 
       C.PostalCode, 
       D.ProductID, 
       D.Quantity,
 ( CASE
   WHEN Quantity >= 100 THEN '경품 1'
   WHEN Quantity >= 50 THEN '경품 2'
   ELSE '없음'
   END ) 
   AS Novelty
FROM OrderDetails D
INNER JOIN Orders O
ON D.OrderID = O.OrderID
INNER JOIN Customers C
ON O.CustomerID = C.CustomerID
ORDER BY D.Quantity DESC, C.CustomerID;

 

 

뜯어보기

SELECT
D.OrderID,O.CustomerID, C.CustomerName, C.Address, C.City, C.PostalCode, D.ProductID, D.Quantity,
(CASE
WHEN Quantity >= 100 THEN '경품 1'
WHEN Quantity >= 50 THEN '경품 2'
ELSE '없음'
END) AS Novelty
: D.OrderID,O.CustomerID, C.CustomerName, C.Address, C.City, C.PostalCode, D.ProductID, D.Quantity, Novelty 컬럼을 보여줘!
: Quantity 100이상일 경우 '경품 1', Quantity 50이상일 경우 '경품 2'로 입력, 해당하지 않는 DB는 '없음'으로 처리해줘!
: 컬럼명은 Novelty로 해줘!

FROM OrderDetails D
: OrderDetails는 D테이블이라고 할게!
: D테이블에서 SELECT에 적힌 컬럼을 보여줘!

INNER JOIN Orders O
ON D.OrderID = O.OrderID
: Order 테이블명은 'O' 라고 할게.
: D 테이블의 OrderID는 O테이블의 OrderID랑 같아, 그러니까 중복되는 O 테이블과 D테이블은 합쳐줘!

INNER JOIN Customers C
ON O.CustomerID = C.CustomerID

: Customers 테이블명은 'C' 라고 할게.
: O 테이블의 CustomerID는 C테이블의 CustomerID랑 같아, 그러니까 중복되는 O 테이블과 C테이블은 합쳐줘!

ORDER BY D.Quantity DESC, C.CustomerID
: D.Quantity는 내림차순, C.CustomerID는 오름차순으로 정렬해줘!

 

결과값


실무에 fit한 data 워싱을 위해 갈길이 멀다- 😇
빈틈없는 쿼리문을 고민해야지!

728x90
728x90