문제 출처
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 - 풀이 - 결과
더보기
1. 오랜 기간 보호한 동물(1)
2. 카테고리 별 도서 판매량 집계하기
3. 있었는데요 없었습니다
4. 오랜 기간 보호한 동물(2)
5. 조건별로 분류하여 주문상태 출력하기
6. 조건에 맞는 사용자와 총 거래금액 조회하기
7. 즐겨찾기가 가장 많은 식당 정보 출력하기
8. 대여 기록이 존재하는 자동차 리스트 구하기
9. 없어진 기록 찾기
10. 조건에 맞는 사용자 정보 조회하기
11. 헤비 유저가 소유한 장소
12. 자동차 대여기록에서 대여중/대여 가능 여부 구분하기
13. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
14. 대혀 횟수가 가장 많은 자동차들의 월별 대여 횟수 구하기
1. 오랜 기간 보호한 동물(1)
SELECT T1.NAME, T1.DATETIME
FROM
(
SELECT AI.NAME "NAME", AI.DATETIME "DATETIME"
, RANK() OVER(ORDER BY AI.DATETIME) "RANK"
FROM ANIMAL_INS AI LEFT JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AO.DATETIME IS NULL
)T1
WHERE T1.RANK <= 3;
2. 카테고리 별 도서 판매량 집계하기
SELECT B.CATEGORY, SUM(BS.SALES) "TOTAL_SALES"
FROM BOOK B, BOOK_SALES BS
WHERE B.BOOK_ID = BS.BOOK_ID
AND TO_CHAR(BS.SALES_DATE,'YYYY-MM') = '2022-01'
GROUP BY B.CATEGORY
ORDER BY 1;
3. 있었는데요 없었습니다
SELECT AI.ANIMAL_ID, AI.NAME
FROM ANIMAL_INS AI JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.DATETIME > AO.DATETIME
ORDER BY AI.DATETIME;
4. 오랜 기간 보호한 동물(2)
SELECT T1.ID, T1.NAME
FROM
(
SELECT AI.ANIMAL_ID "ID", AI.NAME "NAME", RANK() OVER(ORDER BY AO.DATETIME-AI.DATETIME DESC)"RANK"
FROM ANIMAL_INS AI, ANIMAL_OUTS AO
WHERE AI.ANIMAL_ID = AO.ANIMAL_ID
) T1
WHERE T1.RANK <=2;
5. 조건별로 분류하여 주문상태 출력하기
SELECT ORDER_ID, PRODUCT_ID, TO_CHAR(OUT_DATE,'YYYY-MM-DD') "OUT_DATE"
, CASE WHEN OUT_DATE IS NULL THEN '출고미정'
WHEN TO_DATE(TO_CHAR(OUT_DATE,'MM-DD'),'MM-DD')<TO_DATE('05-02','MM-DD')
THEN '출고완료'
ELSE '출고대기' END "출고여부"
FROM FOOD_ORDER
ORDER BY 1;
6. 조건에 맞는 사용자와 총 거래금액 조회하기
SELECT UU.USER_ID, UU.NICKNAME, SUM(UB.PRICE) "TOTAL_SALES"
FROM USED_GOODS_BOARD UB LEFT JOIN USED_GOODS_USER UU
ON UB.WRITER_ID = UU.USER_ID
WHERE UB.STATUS = 'DONE'
GROUP BY UU.USER_ID, UU.NICKNAME
HAVING SUM(UB.PRICE)>=700000
ORDER BY 3;
7. 즐겨찾기가 가장 많은 식당 정보 출력하기
SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES
FROM REST_INFO
WHERE FOOD_TYPE||FAVORITES = ANY(SELECT FOOD_TYPE||MAX(FAVORITES)
FROM REST_INFO
GROUP BY FOOD_TYPE)
ORDER BY 1 DESC;
8. 대여 기록이 존재하는 자동차 리스트 구하기
SELECT DISTINCT(CH.CAR_ID) "CAR_ID"
FROM CAR_RENTAL_COMPANY_CAR CC, CAR_RENTAL_COMPANY_RENTAL_HISTORY CH
WHERE CC.CAR_ID(+) = CH.CAR_ID
AND TO_CHAR(CH.START_DATE,'MM') = '10'
AND CC.CAR_TYPE = '세단'
ORDER BY 1 DESC;
9. 없어진 기록 찾기
SELECT AO.ANIMAL_ID, AO.NAME
FROM ANIMAL_INS AI RIGHT JOIN ANIMAL_OUTS AO
ON AI.ANIMAL_ID = AO.ANIMAL_ID
WHERE AI.DATETIME IS NULL
ORDER BY 1;
10. 조건에 맞는 사용자 정보 조회하기
SELECT USER_ID, NICKNAME, CITY||' '||STREET_ADDRESS1||' '||STREET_ADDRESS2 "전체주소"
, SUBSTR(TLNO,1,3)||'-'||SUBSTR(TLNO,4,4)||'-'||SUBSTR(TLNO,8) "전화번호"
FROM USED_GOODS_USER
WHERE USER_ID IN (SELECT WRITER_ID
FROM USED_GOODS_BOARD
GROUP BY WRITER_ID
HAVING COUNT(*)>=3)
ORDER BY 1 DESC;
11. 헤비 유저가 소유한 장소
SELECT *
FROM PLACES
WHERE HOST_ID IN (SELECT HOST_ID
FROM PLACES
GROUP BY HOST_ID
HAVING COUNT(*)>=2);
12. 자동차 대여 기록에서 대여중 / 대여 가능 여부 구분하기
SELECT CAR_ID, DECODE(SUM(T1.RENT),1,'대여중','대여 가능') "AVAILABILITY"
FROM
(
SELECT CAR_ID
, CASE WHEN TO_DATE('2022-10-16','YYYY-MM-DD') BETWEEN START_DATE AND END_DATE THEN 1 ELSE 0 END "RENT"
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
)T1
GROUP BY T1.CAR_ID
ORDER BY 1 DESC;
13. 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기
SELECT '/home/grep/src/'||UB.BOARD_ID||'/'||UF.FILE_ID||UF.FILE_NAME||UF.FILE_EXT AS FILE_PATH
FROM USED_GOODS_BOARD UB, USED_GOODS_FILE UF
WHERE UB.BOARD_ID = UF.BOARD_ID
AND UB.VIEWS = (SELECT MAX(VIEWS)
FROM USED_GOODS_BOARD)
ORDER BY UF.FILE_ID DESC;
14. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
SELECT EXTRACT(MONTH FROM START_DATE) AS MONTH, CAR_ID, COUNT(*) AS RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE CAR_ID IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE EXTRACT(MONTH FROM START_DATE) BETWEEN 8 AND 10
GROUP BY CAR_ID
HAVING COUNT(*)>=5)
AND EXTRACT(MONTH FROM START_DATE) BETWEEN 8 AND 10
GROUP BY EXTRACT(MONTH FROM START_DATE), CAR_ID
ORDER BY 1,2 DESC;
'Study📚 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - Oracle_Lv.2 (2) (0) | 2023.11.05 |
---|---|
[프로그래머스] - Oracle_Lv.2 (1) (0) | 2023.11.05 |
[프로그래머스] - Oracle_Lv.1 (2) (0) | 2023.11.04 |
[프로그래머스] - Oracle_Lv.1 (1) (0) | 2023.11.04 |