26일부터 29일까지 예비군 훈련으로 열심히 하지 않았다... (사실 핑계.. 할 수 있었는데 힘들어서 안 했음... 반성함)
USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/164672
-- 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회
SELECT
BOARD_ID,
WRITER_ID,
TITLE,
PRICE,
CASE
WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
ELSE '거래완료'
END 'STATUS'
FROM USED_GOODS_BOARD
WHERE CREATED_DATE = '2022-10-05'
ORDER BY BOARD_ID DESC
CASE를 이용하여 상태를 변환해주고 날짜의 형태를 확인하여 조건을 생성 후 쿼리 작성ROOT 아이템을 찾아 아이템 ID(ITEM_ID), 아이템 명(ITEM_NAME)을 출력하는 SQL문을 작성해 주세요. 이때, 결과는 아이템 ID를 기준으로 오름차순 정렬해 주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/273710
## Root ITEM
WITH null_id as(
SELECT ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NULL -- Null 값 추출
)
SELECT ii.ITEM_ID, ii.ITEM_NAME
FROM ITEM_INFO ii
INNER JOIN null_id ni
ON ii.ITEM_ID = ni.ITEM_ID
ORDER BY ii.ITEM_ID
-- 해당 쿼리는 많은 데이터가 존재할 때 조인 이후 필터링이 되기 때문에 비효율적이라고 판단.
# SELECT ii.ITEM_ID, ii.ITEM_NAME
# FROM ITEM_INFO ii
# INNER JOIN ITEM_TREE it
# ON ii.ITEM_ID = it.ITEM_ID
# WHERE it.PARENT_ITEM_ID IS NULL
# ORDER BY ii.ITEM_ID