안녕하세요! 오늘은 프로그래머스 SQL 코딩테스트 연습 문제 중 조건에 부합하는 중고거래 상태 조회하기 문제를 풀어봤습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/164672
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
간단하게 문제를 설명하면 USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 상태를 조회하는 SQL문을 작성하는 거에요. 거래상태가 SALE이면 판매중, RESERVED이면 예약중, DONE이면 거래완료로 분류되어야 하고, 게시글 ID 기준으로 내림차순으로 정렬되어 출력되어야 합니다.
제가 작성한 코드는 아래와 같습니다.
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
CASE
WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
WHEN STATUS = 'DONE' THEN '거래완료'
END AS STATUS
FROM USED_GOODS_BOARD
WHERE CREATED_DATE = TO_DATE('2022-10-05', 'YYYY-MM-DD')
ORDER BY BOARD_ID DESC;
작성한 SQL 문은 BOARD_ID, WRITER_ID, TITLE, PRICE, STATUS 열이 있는 USED_GOODS_BOARD라는 테이블을 쿼리하고 있습니다.
다음은 SQL 문의 각 부분에 대한 풀이입니다.
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE
USED_GOODS_BOARD 테이블에서 검색할 열을 지정하는 SELECT 절입니다. BOARD_ID, WRITER_ID, TITLE, PRICE 열이 결과 집합에 포함됩니다.
CASE
WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
WHEN STATUS = 'DONE' THEN '거래완료'
END AS STATUS
STATUS 컬럼의 값을 확인하고 그에 해당하는 한글 값을 결과셋의 STATUS 컬럼에 별칭으로 할당하는 CASE 문입니다. STATUS가 SALE이면 '판매중'으로 표시됩니다. STATUS가 'RESERVED'이면 '예약중'으로 표시됩니다. STATUS가 'DONE'인 경우 '거래완료'로 표시됩니다.
FROM USED_GOODS_BOARD
데이터를 검색할 USED_GOODS_BOARD 테이블을 지정하는 FROM 절입니다.
WHERE CREATED_DATE = TO_DATE('2022-10-05', 'YYYY-MM-DD')
CREATED_DATE 열의 값을 기준으로 데이터를 필터링하는 WHERE 절입니다. 이 절은 TO_DATE 함수를 사용하여 날짜 문자열 '2022-10-05'를 'YYYY-MM-DD' 형식의 날짜 값으로 변환하고 이를 CREATED_DATE 열과 비교하여 CREATED_DATE가 2022년 10월 5일인 행만 검색합니다.
ORDER BY BOARD_ID DESC;
결과를 내림차순으로 BOARD_ID 열을 기준으로 정렬하도록 지정하는 ORDER BY 절입니다. DESC 키워드는 BOARD_ID 값이 가장 높은 값부터 가장 낮은 값까지 내림차순으로 정렬해야 함을 나타냅니다.

'SQL' 카테고리의 다른 글
[프로그래머스 | SQL] 조회 수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 해석 (Oracle) (0) | 2023.06.12 |
---|---|
데이터베이스, DBMS, 테이블 및 SQL에 대한 전반적인 모든 것! (1) | 2023.06.11 |
[프로그래머스 | SQL] 조건에 부합하는 중고거래 댓글 조회하기 (Oracle) (1) | 2023.06.09 |
MySQL, SQL Server 및 MS Access 용 SQL 데이터 유형 이해하기 (0) | 2023.06.08 |
SQL Injection 이란 무엇일까요? 데이터 보호를 위한 종합 정리 (0) | 2023.06.07 |