[SQL] 20240217

김예지·2024년 2월 17일

SQL 풀이

목록 보기
19/26
post-thumbnail

*프로그래머스 SQL 문제 풀이입니다.


문제 1: 대여 기록이 존재하는 자동차 리스트 구하기

📃 문제 1 링크

CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 자동차 종류가 '세단'인 자동차들 중 10월에 대여를 시작한 기록이 있는 자동차 ID 리스트를 출력하는 SQL문을 작성해주세요. 자동차 ID 리스트는 중복이 없어야 하며, 자동차 ID를 기준으로 내림차순 정렬해주세요.

🔎 풀이 포인트

  • 조건: 자동차 종류가 '세단'인 자동차 중 10월에 대여를 시작한 기록이 있는 자동차
  • 정렬: 자동차 ID 기준 내림차순
  • OUTPUT COLUMNS: CAR_ID(중복 x)

제출 답안

SELECT DISTINCT(B.CAR_ID)  
FROM CAR_RENTAL_COMPANY_CAR A, CAR_RENTAL_COMPANY_RENTAL_HISTORY B
WHERE A.CAR_ID = B.CAR_ID
	AND CAR_TYPE = '세단'
   	AND TO_CHAR(START_DATE, 'MM') = '10'
ORDER BY B.CAR_ID DESC ; 

문제 2: 조건별로 분류하여 주문상태 출력하기

📃 문제 2 링크

FOOD_ORDER 테이블에서 5월 1일을 기준으로 주문 ID, 제품 ID, 출고일자, 출고여부를 조회하는 SQL문을 작성해주세요. 출고여부는 5월 1일까지 출고완료로 이 후 날짜는 출고 대기로 미정이면 출고미정으로 출력해주시고, 결과는 주문 ID를 기준으로 오름차순 정렬해주세요.

🔎 풀이 포인트

  • 조건: 5월 1일 기준 상태 조회(출고완료, 출고 대기, 출고 미정)
  • 정렬: 주문ID 기준 오름차순
  • OUTPUT COLUMNS: 주문ID, 제품ID, 출고일자, 출고여부

제출 답안

SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE, 'YYYY-MM-DD'), 
    CASE WHEN OUT_DATE IS NULL THEN '출고미정' 
        WHEN OUT_DATE <= TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고완료'
        WHEN OUT_DATE > TO_DATE('2022-05-01', 'YYYY-MM-DD') THEN '출고대기'
    END
FROM FOOD_ORDER
ORDER BY ORDER_ID ; 

문제 3: 자동차 평균 대여 기간 구하기

📃 문제 3 링크

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.

🔎 풀이 포인트

  • 조건: 평균 대여 기간이 7일 이상인 자동차 정보
  • 정렬: 평균 대여 기간 기준 내림차순, 자동차 ID 기준 내림차순
  • OUTPUT COLUMNS: CAR_ID, AVERAGE_DURATION

제출 답안

SELECT CAR_ID, ROUND(AVG(END_DATE - START_DATE + 1), 1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY 
GROUP BY CAR_ID
HAVING ROUND(AVG(END_DATE - START_DATE +1), 1) >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC; 
profile
넓고 얕게? 좁고 깊게?

0개의 댓글