오늘은 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 워싱을 위해 갈길이 멀다- 😇
빈틈없는 쿼리문을 고민해야지!
'TOOLS > My SQL' 카테고리의 다른 글
[My SQL] NULL 값 대응 - COALESCE(코어레스) / IFNULL 함수 (0) | 2022.03.20 |
---|---|
[My SQL] 구매빈도(Frequency) 확인 - 중복 값 산출 쿼리문 (0) | 2022.03.20 |
[내만내뜯SQL] W3Schools DB 활용한 My SQL 쿼리문 - 1 (0) | 2022.01.30 |
[내만내뜯SQL] W3Schools로 My SQL 연습하기! (0) | 2022.01.30 |
[My SQL] 독학 1개월 차, 추천 사이트 정리 (0) | 2022.01.30 |