SQL

[SQL 쿼리테스트] 6일차

지구(Jigoo) 2025. 8. 22. 17:46

프로그래머스 MySQL 레벨 2 문제풀이

 

1) 업그레이드 된 아이템 구하기 (풀이 완료)

  • JOIN으로 푸려다가 실패하고 중첩 서브쿼리 형태로 변경
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID IN (
SELECT ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IN (SELECT ITEM_ID
FROM ITEM_INFO
WHERE RARITY = "RARE"))
ORDER BY ITEM_ID DESC;

 

2) ROOT 아이템 구하기 (풀이 완료)

SELECT ITEM_ID, ITEM_NAME
FROM ITEM_INFO
WHERE ITEM_ID IN (SELECT ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NULL)
ORDER BY ITEM_ID ASC;

 

3) 조건에 맞는 아이템들의 가격의 총합 구하기 (풀이 완료)

SELECT SUM(PRICE) AS "TOTAL_PRICE"
FROM ITEM_INFO
WHERE RARITY = "LEGEND";

 

4) 조건에 부합하는 중고거래 상태 조회하기 (풀이 완료)

  • CASE문 사용법을 자꾸 헷갈림
    • CASE-WHEN-THEN-END 으로 암기
    • 마지막에 END 필수
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, CASE STATUS WHEN "SALE" THEN "판매중"
                                                  WHEN "RESERVED" THEN "예약중"
                                                  WHEN "DONE" THEN "거래완료"
                                                  END
FROM USED_GOODS_BOARD 
WHERE CREATED_DATE = "2022-10-05"
ORDER BY BOARD_ID DESC;

 

5) 자동차평균 대여기간 구하기 (풀이 완료)  

  • 평균 집계 함수를 AVERAGE 라고 써서 오류남 제 정신이 아닌듯
SELECT CAR_ID, ROUND(AVG(DURATION),1) AS 'AVERAGE_DURATION'
FROM (SELECT *, DATEDIFF(END_DATE, START_DATE)+1 AS 'DURATION'
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY) AS T
GROUP BY CAR_ID
HAVING AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;

'SQL' 카테고리의 다른 글

[SQL 쿼리테스트] 프로그래머스 Level1 복습  (0) 2025.11.22
[SQL 쿼리테스트] 5일차  (2) 2025.07.15
[SQL 쿼리테스트] 4일차  (0) 2025.06.09
[SQL 쿼리테스트] 3일차  (0) 2025.06.08
[SQL 쿼리테스트] 2일차  (4) 2025.06.06