코딩테스트

[프로그래머스] [SQL] 조건에 부합하는 중고거래 상태 조회하기

히그다스 2023. 10. 13. 10:31

 

 

이게 나를 애먹인 문제

CASE~WHEN 절을 처음 써봐서 그런 것도 있고

몰라서 Bard한테 물어봤는데 자꾸 이상하게 답해서 더 헤맸다

Bard 이 좌식 ~~!

 

 

 

 

난 처음 풀어봐서 코드가 좀 복잡한데 고수님들 답 찾아보니 낫다

 

그래도 우선 내가 푼 논리구조 기록하기

 

거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력

 

이 부분을 해결하는 함수를 찾는데 시간이 좀 들었다

CASE~WHEN은 사용해 본 적이 없어서 바로 머리 속에서 안나왔음 😂

 

어찌저찌 찾았는데 처음에는 

CASE WHEN ~ THEN

CASE WHEN ~ THEN 

이렇게 적고 ㅋㅋㅋㅋㅋ

 

자꾸 오류나서 Bard한테 물어보니 컴마를 찍으라고...

해결은 안됐다 스트레스트만 받음

 

다른게 문제가 아니고 컴마 빼고 서브쿼리에 이름 붙이니까 해결됨 ㅎㅎㅗ

 

2022-10-05 날짜도 첨에 DATETIME인줄 알고

DATE_FORMAT썼다가 오류나서 DATE인거 알았다

그래서 '2022-10-05' 찾는 걸로 고침

 

여튼 여러모로 문제였다 이거에요 ~ 

 

얼레벌레 작성한 코드가 깔끔하지 못하고~

 

 

SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, STATUS_KR 'STATUS'
FROM
(SELECT *,
CASE 
 WHEN status = 'SALE' THEN '판매중'
 WHEN status = 'RESERVED' THEN '예약중'
 WHEN status = 'DONE' THEN '거래완료'
 END AS STATUS_KR
FROM USED_GOODS_BOARD) A
WHERE CREATED_DATE LIKE '2022-10-05'
ORDER BY BOARD_ID DESC;

 

 

보이는가 이 차이가 

나도 익숙해지면 이렇게 짤 수 있겠지

 

CASE WHEN이 SELECT절로 들어가는 거라 이렇게 작성해도 된단다 !

훨씬 깔끔하다

서브쿼리 안써도 됨 ㅋㅋ큐ㅠ

너무 서브쿼리에 집착했나 싶지만 CASE~WHEN을 처음 알게 됐으니 만족한다

 

 

SELECT BOARD_ID,
       WRITER_ID,
       TITLE,
       PRICE,
       CASE WHEN STATUS = 'SALE' THEN '판매중'
            WHEN STATUS = 'RESERVED' THEN '예약중'
            ELSE '거래완료'
       END AS STATUS
  FROM USED_GOODS_BOARD
 WHERE CREATED_DATE = '2022-10-05'
 ORDER
    BY BOARD_ID DESC;

 

위키독스에서 보니까 기본폼은 CASE WHEN ~ THEN ~ (ELSE~) END AS ~

→ 칼럼XXX가 YY일 때, ZZ값을 갖는 칼럼PPP를 생성

 

CASE WHEN XXX=YY THEN ZZ 
END AS PPP

 

 

이번에 알았으니 잘 써먹길 바라며...

이만 총총

 

 


출처 : 프로그래머스, [SQL] 조건에 부합하는 중고거래 상태 조회하기(프로그래머스/MySQL/Level 2)

 

[SQL] 조건에 부합하는 중고거래 상태 조회하기(프로그래머스/MySQL/Level 2)

안녕하세요! 데코입니다! 오늘은 프로그래머스 코딩테스트 연습에 있는 "조건에 부합하는 중고거래 상태 조회하기" 문제를 포스팅하려고 합니다! 바로 포스팅 시작할게요! :) (출처 : https://school.

kkw-da.tistory.com

참고 : https://wikidocs.net/31639, Bard(도움은 안됨)