Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 판다스
- SQL
- 파이썬
- 물 만날 물고기
- KNIME 데이터 분석
- pyinstaller
- 데이터분석솔루션
- power-bi
- KNIME
- 데이터프레임
- pandas
- 해커랭크
- Revising the Select Query II
- leetcode
- 리스트
- HackerRank
- DB
- colab
- 코딩테스트
- 태블로
- MYSQL
- 텐서플로우
- sorted()
- 프로그래머스
- python
- Tableau
- 나임
- sklearn
- 코랩
- 물만날물고기
Archives
- Today
- Total
물 만날 물고기
[프로그래머스/SQL] - (2) 조건에 부합하는 중고거래 상태 조회하기 본문
🔍 예상 검색어
더보기
# 프로그래머스
# SQL
# 조건에 부합하는 중고거래 상태 조회하기
해당 포스팅은 프로그래머스 SQL "조건에 부합하는 중고거래 상태 조회하기" 문제에 대하여 정리하였습니다.
▶ 문제
코딩테스트 연습 - 조건에 부합하는 중고거래 상태 조회하기 | 프로그래머스 스쿨
▶ 정답(1) : ELSE 사용 안함
-- 코드를 입력하세요
/*
FROM USED_GOODS_BOARD AS B
B.BOARD_ID,
B.WRITER_ID,
B.TITLE,
B.CONTENTS,
B.PRICE,
B.CREATED_DATE,
B.STATUS,
B.VIEWS
*/
/* RESULT
B.BOARD_ID, B.WRITER_ID, B.TITLE, B.PRICE, B.STATUS
*/
/*
(1) 2022년 10월 5일에 등록된 중고거래 - 완료✔️
(2) 조건문 - 완료✔️
B.STATUS = SALE => 판매중
B.STATUS = RESERVED => 예약중
B.STATUS = DONE => 거래완료
(3) 내림차순 정렬 : B.BOARD_ID - 완료✔️
*/
SELECT B.BOARD_ID, B.WRITER_ID, B.TITLE, B.PRICE,
CASE B.STATUS
WHEN 'SALE' THEN '판매중'
WHEN 'RESERVED' THEN '예약중'
WHEN 'DONE' THEN '거래완료'
END AS STATUS
FROM USED_GOODS_BOARD AS B
WHERE DATE_FORMAT(B.CREATED_DATE, "%Y-%m-%d") = "2022-10-05"
ORDER BY B.BOARD_ID DESC;
▶ 정답(2) : ELSE 사용
SELECT B.BOARD_ID, B.WRITER_ID, B.TITLE, B.PRICE,
CASE B.STATUS
WHEN 'SALE' THEN '판매중'
WHEN 'RESERVED' THEN '예약중'
ELSE '거래완료'
END AS STATUS
FROM USED_GOODS_BOARD AS B
WHERE DATE_FORMAT(B.CREATED_DATE, "%Y-%m-%d") = "2022-10-05"
ORDER BY B.BOARD_ID DESC;
▶ 정답(3) : WHERE절 DATE_FORMAT 사용 안함
SELECT B.BOARD_ID, B.WRITER_ID, B.TITLE, B.PRICE,
CASE B.STATUS
WHEN 'SALE' THEN '판매중'
WHEN 'RESERVED' THEN '예약중'
ELSE '거래완료'
END AS STATUS
FROM USED_GOODS_BOARD AS B
WHERE CREATED_DATE = '2022-10-05'
ORDER BY B.BOARD_ID DESC;
▶ 총평
이번 문제는 단일 테이블로만 이루어진 문제로 DATE_FORMAT 처리와 CASE 함수 사용이 중요하였다. 그리고 DATE_FORMAT 함수에서 "%Y" 대문자와 "%y" 소문자의 차이를 확인해보았다. 대문자는 년도 4자리 출력, 소문자는 2자리로 출력된다.
SQL 코딩 테스트를 염두해두고 학습을 진행하는 것이기 때문에 문제에 대한 이해도 중요하고 실수하지 않는 것도 중요하다고 생각된다. 그래서 문제를 풀기전에 각 테이블별 컬럼들과 결과 테이블로 출력될 컬럼들을 주석으로 먼저 정리하고, 문제에서 조건이 되는 부분들을 미리 정리해두고 시작하였다.
▼ 참고자료
No. | 내용 | 비고 |
1 | 조건에 부합하는 중고거래 상태 조회하기 | qqo222.log |
2 | [SQL] 조건에 부합하는 중고거래 상태 조회하기(프로그래머스/MySQL/Level 2) | BigData + Data Analyst + Daily |
▼ 복습/히스토리
더보기
No. | 복습일 | 비고 |
1 | 2023년 06월 24일 - 09시 17분 | 문제에서 제시된 조건 코드 작성하면서 체크하는 습관이 필요함 |
2 | 2023년 06월 24일 - 10시 04분 | CASE WHEN 절 STATUS 각각 입력 |
3 | ||
4 | ||
5 |
- 작성코드
-- 코드를 입력하세요
-- USED_GOODS_BOARD
-- BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS
/* 문제 조건
문제 조건이 적용되었는지 체크하면서 진행
(1) USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID
(2) 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류
(3) 결과는 게시글 ID를 기준으로 내림차순 정렬
*/
/* 결과테이블
BOARD_ID, WRITER_ID, TITLE, PRICE, STATUS(+NEW)
*/
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
CASE STATUS -- (2)
WHEN "SALE" THEN "판매중"
WHEN "DONE" THEN "거래완료"
WHEN "RESERVED" THEN "예약중"
ELSE NULL
END AS STATUS
FROM USED_GOODS_BOARD
WHERE DATE_FORMAT(CREATED_DATE, "%Y-%m-%d") = "2022-10-05" -- (1)
ORDER BY BOARD_ID DESC -- (3)
- 작성코드(2)
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE,
CASE -- (2)
WHEN STATUS = "SALE" THEN "판매중"
WHEN STATUS = "DONE" THEN "거래완료"
WHEN STATUS = "RESERVED" THEN "예약중"
ELSE NULL
END AS STATUS
FROM USED_GOODS_BOARD
WHERE DATE_FORMAT(CREATED_DATE, "%Y-%m-%d") = "2022-10-05" -- (1)
ORDER BY BOARD_ID DESC -- (3)
'DB & SQL > 프로그래머스' 카테고리의 다른 글
[프로그래머스/SQL] - (5) 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.06.23 |
---|---|
[프로그래머스/SQL] - (76) 모든 레코드 조회하기 (0) | 2023.06.23 |
[프로그래머스/SQL] - (40) 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.06.23 |
[프로그래머스/SQL] - (6) 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.06.23 |
[프로그래머스/SQL] - (1) 조건에 부합하는 중고거래 댓글 조회하기 (1) | 2023.06.21 |