Study📚/프로그래머스

[프로그래머스] - Oracle_Lv.2 (2)

woo!na 2023. 11. 5. 18:53

문제 출처

https://programmers.co.kr

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 - 풀이 - 결과

더보기

13. 3월에 태어난 여성 회원 목록 출력하기

14. 카테고리 별 상품 개수 구하기

15. 가격대 별 상품 개수 구학

16. 상품 별 오프라인 매출 구하기

17. 재구매가 일어난 상품과 회원 리스트 구하기

18. 진료과별 총 예약 횟수 출력하기

19. 성분으로 구분한 아이스크림 총 주문량

20. 조건에 맞는 도서와 저자 리스트 출력하기

21. 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

22. 자동차 평균 대여 기간 구하기

23. 조건에 부합하는 중고거래 상태 조회하기

 

13. 3월에 태어난 여성 회원 목록 출력하기

SELECT MEMBER_ID, MEMBER_NAME, GENDER, TO_CHAR(DATE_OF_BIRTH,'YYYY-MM-DD') "DATE_OF_BIRTH"
FROM MEMBER_PROFILE
WHERE EXTRACT(MONTH FROM DATE_OF_BIRTH) = 03
  AND TLNO IS NOT NULL
  AND GENDER = 'W'
ORDER BY 1;

 


14. 카테고리 별 상품 개수 구하기

SELECT SUBSTR(PRODUCT_CODE,1,2) "CATEGORY", COUNT(*) "PRODUCTS"
FROM PRODUCT
GROUP BY SUBSTR(PRODUCT_CODE,1,2)
ORDER BY 1;

 


15. 가격대 별 상품 개수 구하기

SELECT NVL(TRUNC(PRICE,-4),0) "PRICE_GROUP", COUNT(*) "PR0DUCTS"
FROM PRODUCT
GROUP BY NVL(TRUNC(PRICE,-4),0)
ORDER BY 1;

 


16. 상품 별 오프라인 매출 구하기

SELECT P.PRODUCT_CODE, SUM(P.PRICE * NVL(OS.SALES_AMOUNT,0)) "SALES"
FROM PRODUCT P LEFT JOIN OFFLINE_SALE OS
ON P.PRODUCT_ID = OS.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY 2 DESC, 1;

 


17. 재구매가 일어난 상품과 회원 리스트 구하기

SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY (USER_ID,PRODUCT_ID)
HAVING COUNT(*)>=2
ORDER BY 1, 2 DESC;

 


18. 진료과별 총 예약 횟수 출력하기

SELECT MCDP_CD "진료과 코드", COUNT(*) "5월예약건수"
FROM APPOINTMENT
WHERE TO_CHAR(APNT_YMD,'YYYY-MM') = '2022-05'
GROUP BY MCDP_CD
ORDER BY 2, 1;

 


19. 성분으로 구분한 아이스크림 총 주문량

SELECT II.INGREDIENT_TYPE, SUM(FH.TOTAL_ORDER) "TOTAL_ORDER"
FROM FIRST_HALF FH, ICECREAM_INFO II
WHERE FH.FLAVOR = II.FLAVOR
GROUP BY II. INGREDIENT_TYPE
ORDER BY 2;

 


20. 조건에 맞는 도서와 저자 리스트 출력하기

SELECT B.BOOK_ID, A.AUTHOR_NAME, TO_CHAR(B.PUBLISHED_DATE,'YYYY-MM-DD') "PUBLISHED_DATE"
FROM BOOK B JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE B.CATEGORY = '경제'
ORDER BY 3;

 


21. 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

SELECT CAR_TYPE, COUNT(*) "CARS"
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%'
   OR OPTIONS LIKE '%열선시트%'
   OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY 1;

 


22. 자동차 평균 대여 기간 구하기

SELECT CAR_ID, ROUND(AVG(END_DATE-START_DATE+1),1) "AVERAGE_DURATION"
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVG(END_DATE-START_DATE+1) >=7
ORDER BY 2 DESC, 1 DESC;

 


23. 조건에 부합하는 중고거래 상태 조회하기

SELECT BOARD_ID, WRITER_ID, TITLE, PRICE
    , DECODE(STATUS,'SALE','판매중','RESERVED','예약중','DONE','거래완료','몰라') "STATUS"
FROM USED_GOODS_BOARD
WHERE TO_CHAR(CREATED_DATE,'YYYY-MM-DD') = '2022-10-05'
ORDER BY 1 DESC;