ABOUT ME

-

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

     

     

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

     

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

     

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

     

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

     

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

     

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

     

     

    프로그래머스 문제 모음

    728x90

     

     


    문제 풀이

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

     

     

     

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

    USED_GOODS_BOARD 테이블에서 2022 10 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요.
    거래상태가 SALE 이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력해주시고, 결과는 게시글 ID 기준으로 내림차순 정렬해주세요.

     

    SELECT board_id, writer_id, title, price, case when status = 'SALE' then '판매중' when status = 'RESERVED' then '예약중' else '거래완료' end as status
    from used_goods_board
    where to_char(created_date, 'yyyy-mm-dd') = '2022-10-05'
    order by 1 desc

     

     

     

     

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

    CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7 이상인 자동차들의 자동차 ID 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요.
    평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID 기준으로 내림차순 정렬해주세요.

     

    SELECT car_id, round(avg(end_date - start_date + 1), 1) as 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

     

    반응형

     

     

    3. 카테고리 별 도서 판매량 집계하기

    2022년 1월의 카테고리 별 도서 판매량을 합산하고, 카테고리(CATEGORY), 총 판매량(TOTAL_SALES) 리스트를 출력하는 SQL문을 작성해주세요.

    결과는 카테고리명을 기준으로 오름차순 정렬해주세요.

     

    SELECT b.category as category, sum(bs.sales) as 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

     

     

     

     

    4. 있었는데요 없었습니다

    보호 시작일보다 입양일이 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요.
    이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다.

     

    SELECT ai.animal_id, ai.name
    from animal_ins ai, animal_outs ao
    where ai.animal_id = ao.animal_id and ai.datetime > ao.datetime
    order by ai.datetime

     

     

     

     

    5. 오랜 기간 보호한 동물(1)

    아직 입양을 동물 , 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요.
    이때 결과는 보호 시작일 순으로 조회해야 합니다.

     

    SELECT ai.name, ai.datetime
    from animal_ins ai, animal_outs ao
    where ai.animal_id = ao.animal_id(+) and ao.datetime is null
    order by 2
    fetch first 3 rows only

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.