문제 1. 특정 옵션이 포함된 자동차 리스트 구하기
CAR_RENTAL_COMPANY_CAR 테이블에서 '네비게이션' 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
💡 문제 풀이
-- 조회 : *
-- 조건 : options에 네비게이션 포함
-- 정렬 : 자동차id desc
SELECT *
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%'
ORDER BY CAR_ID DESC;
문제 2. 조건에 부합하는 중고거래 상태 조회
USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요. 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
💡 문제 풀이
-- 조회 : 게시물ID,작성자ID,게시글제목, 가격, 거래상태
-- 조건1 : 2022년 10월 5일 등록된 게시물
-- 조건2 : 거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력
-- 정렬 : 게시글ID desc
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 = '2022-10-05'
ORDER BY BOARD_ID DESC;
문제 3. 취소되지 않은 진료 예약 조회
PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022년 4월 13일 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요. 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요. 결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
💡 문제 풀이
-- 조회 : 진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시
-- 3개 테이블 조인
-- 조건 : 2022년 4월 13일 AND 취소되지 않은 AND CS
-- 정렬 : 진료예약일시 asc
SELECT a.APNT_NO, p.PT_NAME, p.PT_NO, d.MCDP_CD, d.DR_NAME, a.APNT_YMD
FROM APPOINTMENT a
LEFT JOIN PATIENT p
ON a.PT_NO = p.PT_NO
LEFT JOIN DOCTOR d
ON a.MDDR_ID = d.DR_ID
WHERE DATE(a.APNT_YMD)= '2022-04-13'
AND a.APNT_CNCL_YN = 'N'
AND a.MCDP_CD = 'CS'
ORDER BY a.APNT_YMD asc;
문제 4. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기 `복습하기!`
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 2022년 10월 16일에 대여 중인 자동차인 경우 '대여중' 이라고 표시하고, 대여 중이지 않은 자동차인 경우 '대여 가능'을 표시하는 컬럼(컬럼명: AVAILABILITY)을 추가하여 자동차 ID와 AVAILABILITY 리스트를 출력하는 SQL문을 작성해주세요. 이때 반납 날짜가 2022년 10월 16일인 경우에도 '대여중'으로 표시해주시고 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요.
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
💡 문제 풀이
SELECT CAR_ID
,CASE WHEN MAX('2022-10-16' BETWEEN START_DATE AND END_DATE)=1 THEN '대여중'
ELSE '대여 가능'
END AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
집계함수 MAX()안에 연산자를 넣게 되면 해당 연산이 참값이라면 1을 출력하고 거짓이라면 0을 출력