ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ORACLE] 매일 5개. 프로그래머스 SQL 문제 풀기 챌린지 Day 13
    Study/SQL 2024. 6. 11. 23:34
    728x90
    반응형

     

     

    오늘부터 새로운 도전을 시작하려고 합니다.

     

    바로 하루 5개씩 SQL 관련 문제를 푸는 것입니다.

     

    매일 프로그래머스에서 제공하는 SQL 문제5개씩 해결하며, 데이터 베이스 관리 및 쿼리 작성 능력을 성장시키고자 합니다.

     

    또한, 오라클(Oracle) 데이터베이스를 사용하여 문제를 해결함으로써, 실제 업무 환경에서 마주칠 수 있는 다양한 상황에 대비하고자 합니다.

     

    매일 바쁜 일상 속에서 새로운 것을 배우고 성장하는 것은 어렵겠지만, 도전이라도 하면 어떨까 합니다.

     

    프로그래머스는 무료로 다양한 난이도의 문제를 제공하기 때문에, 저는 제일 낮은 난이도부터 정답률이 높은 순서대로 풀어 보려고 합니다.

     

     

    프로그래머스 문제 모음

    728x90

     

     


    문제 풀이

    해당 문제에 대한 자세한 내용은 프로그래머스에서 찾아볼 수 있습니다!

     

     

     

    1. 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기

    CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여 시작일을 기준으로 2022 8월부터 2022 10월까지 대여 횟수가 5 이상인 자동차들에 대해서 해당 기간 동안의 월별 자동차 ID 대여 횟수(컬럼명: RECORDS) 리스트를 출력하는 SQL문을 작성해주세요.
    결과는 월을 기준으로 오름차순 정렬하고, 월이 같다면 자동차 ID 기준으로 내림차순 정렬해주세요.
    특정 월의 대여 횟수가 0 경우에는 결과에서 제외해주세요.

     

    select extract(month from start_date) as month, b.car_id, count(*) as records
    from 
        (SELECT car_id
        from CAR_RENTAL_COMPANY_RENTAL_HISTORY 
        where to_char(start_date, 'yyyy-mm') between '2022-08' and '2022-10' 
        group by car_id 
        having count(car_id) >= 5) a, CAR_RENTAL_COMPANY_RENTAL_HISTORY b
    where a.car_id =b.car_id and to_char(b.start_date, 'yyyy-mm') between '2022-08' and '2022-10' 
    group by extract(month from start_date), b.car_id
    having count(*) > 0
    order by 1, 2 desc

     

     

     

     

    2. 보호소에서 중성화한 동물

    보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다.
    보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 , 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.

     

    SELECT b.animal_id, b.animal_type, b.name
    from animal_ins a, animal_outs b
    where a.animal_id = b.animal_id and a.sex_upon_intake like 'Intact%' and (b.sex_upon_outcome like 'Spayed%' or b.sex_upon_outcome like 'Neutered%')
    order by 1

     

    반응형

     

     

    3. 식품분류별 가장 비싼 식품의 정보 조회하기

    FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요.
    이때 식품분류가 '과자', '', '김치', '식용유' 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요.

     

    select category, price as max_price, product_name
    from food_product
    where (category, price) in (
        SELECT category, max(price) 
        from food_product
        group by category
        having category in ('과자', '김치', '국', '식용유'))
    order by 2 desc

     

     

     

     

    4. 5월 식품들의 총매출 조회하기

    FOOD_PRODUCT FOOD_ORDER 테이블에서 생산일자가 2022 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요.
    이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID 기준으로 오름차순 정렬해주세요.

     

    SELECT a.product_id, a.product_name, sum(a.price * b.amount) as total_sales
    from food_product a, food_order b
    where a.product_id = b.product_id and to_char(b.produce_date, 'yyyy-mm') = '2022-05'
    group by a.product_id, a.product_name
    order by 3 desc, 1

     

     

     

     

    5. 취소되지 않은 진료 예약 조회하기

    PATIENT, DOCTOR 그리고 APPOINTMENT 테이블에서 2022 4 13 취소되지 않은 흉부외과(CS) 진료 예약 내역을 조회하는 SQL문을 작성해주세요.
    진료예약번호, 환자이름, 환자번호, 진료과코드, 의사이름, 진료예약일시 항목이 출력되도록 작성해주세요.
    결과는 진료예약일시를 기준으로 오름차순 정렬해주세요.

     

    select a.apnt_no, p.pt_name, p.pt_no, a.mcdp_cd, d.dr_name, apnt_ymd
    from patient p, doctor d, appointment a
    where p.pt_no = a.pt_no and d.dr_id = a.mddr_id
        and to_char(a.apnt_ymd, 'yyyy-mm-dd') = '2022-04-13'
        and a.apnt_cncl_yn = 'N'
        and a.mcdp_cd = 'CS'
    order by a.apnt_ymd

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.