이게 나를 애먹인 문제
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)
참고 : https://wikidocs.net/31639, Bard(도움은 안됨)
'코딩테스트' 카테고리의 다른 글
[프로그래머스] [SQL] 없어진 기록 찾기 (0) | 2023.10.24 |
---|---|
[프로그래머스] [Python] 수 조작하기 1 (0) | 2023.10.17 |
[프로그래머스] [SQL] DATETIME에서 DATE로 형 변환 (0) | 2023.10.13 |
[프로그래머스] [SQL] 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.10.12 |
[프로그래머스] [SQL] 고양이와 개는 몇 마리 있을까 (1) | 2023.10.12 |