프로그래머스 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 |