ABOUT ME

-

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

     

     

     

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

     

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

     

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

     

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

     

     

    프로그래머스 문제 모음

    728x90

     

    마지막 2일은 3문제씩 풀었습니다.

     

     


    문제 풀이

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

     

     

     

    1. 그룹별 조건에 맞는 식당 목록 출력하기

    MEMBER_PROFILE REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요.
    회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.

     

    select a.member_name, b.review_text, to_char(b.review_date, 'yyyy-mm-dd') as review_date
    from
        (SELECT m.member_id, m.member_name, count(*)
        from member_profile m, rest_review r
        where m.member_id = r.member_id
        group by m.member_id, m.member_name
        order by count(*) desc
        fetch first 1 row only) a, rest_review b
    where a.member_id = b.member_id
    order by 3, 2

     

     

     

     

    2. 오프라인/온라인 판매 데이터 통합하기

    ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요
    OFFLINE_SALE 
    테이블의 판매 데이터의 USER_ID 값은 NULL 표시해주세요.
    결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID 기준으로 오름차순, 상품ID까지 같다면 유저 ID 기준으로 오름차순 정렬해주세요.

     

    select to_char(sales_date, 'yyyy-mm-dd') as sales_date, product_id, user_id, sales_amount
    from online_sale
    where to_char(sales_date, 'yyyymm') = '202203' 
    union all
    select to_char(sales_date, 'yyyy-mm-dd') as sales_date, product_id, null as user_id, sales_amount
    from offline_sale
    where to_char(sales_date, 'yyyymm') = '202203'
    order by 1, 2, 3

     

    반응형

     

     

    3. 입양 시각 구하기(2)

    보호소에서는 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다.
    0
    시부터 23시까지, 시간대별로 입양이 건이나 발생했는지 조회하는 SQL문을 작성해주세요.
    이때 결과는 시간대 순으로 정렬해야 합니다.

     

    select b.hour, nvl(a.count, 0)
    from 
        (SELECT to_number(to_char(datetime, 'hh24')) as hour, count(*) as count
        from animal_outs
        group by to_number(to_char(datetime, 'hh24'))) a,
        (select level -1 as hour
        from dual
        connect by level <= 24) b
    where a.hour(+) = b.hour
    order by 1

     

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.