본문 바로가기
문제풀이/SQL(My sql)

[문제풀이] 조건에 부합하는 중고거래 상태 조회하기

by kime2 2024. 1. 22.
출처

 

문제

 

USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.문제에 대한 해석

 

문제에 대한 해석

-- 조건: 2022년 10월 5일에 등록
-- 조회: 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태
-- 출력: 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류
-- 정렬: 게시글ID 내림차순

풀이(MYSQL)

select board_id, writer_id, title, price,
    case when status = 'SALE' then '판매중'
            when status = 'RESERVED' then '예약중'
            else '거래완료' end
from used_goods_board
where CREATED_DATE like '%2022-10-05%'
order by board_id desc

 

작동순서

💡SQL 실행 순서는 From -> Where -> Group by -> Having -> Select -> Order by ->결과반환

  1. FROM 절: used_goods_board
  2. WHERE 절: CREATED_DATE 가 2022-10-05인 경우 필터링
  3. SELECT 절: board_id, writer_id, title, price, status가 SALE일때는 판매중, RESERVED일때는 예약중, 그 외 거래완료로 출력
  4. ORDER BY 절: board_id 내림차순

 

다른사람 풀이

SELECT BOARDID,
WRITERID,
TITLE,
PRICE,
IF(STATUS = 'SALE', '판매중', IF(STATUS = 'RESERVED', '예약중', '거래완료')) AS STATUS
FROM USEDGOODSBOARD
WHERE DATEFORMAT(CREATEDDATE, '%Y-%m-%d') = '2022-10-05'
ORDER BY BOARD_ID DESC

배운점

  • case when절과  if절을 동일하게 쓸 수 있다