ABOUT ME

-

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

     

     

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

     

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

     

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

     

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

     

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

     

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

     

     

    프로그래머스 문제 모음

    728x90

     

     


    문제 풀이

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

     

     

     

    1. 서울에 위치한 식당 목록 출력하기

    REST_INFO REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요.
    이때 리뷰 평균점수는 소수점 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요.

     

    SELECT a.rest_id, a.rest_name, a.food_type, a.favorites, a.address, round(sum(b.review_score)/count(b.review_score), 2) as score
    from rest_info a, rest_review b
    where a.rest_id = b.rest_id
        and a.address like '서울%'
    group by a.rest_id, a.rest_name, a.food_type, a.favorites, a.address
    order by score desc, a.favorites desc

     

     

     

     

    2. 년, 월, 성별 별 상품 구매 회원 수 구하기

    USER_INFO 테이블과 ONLINE_SALE 테이블에서 , , 성별 별로 상품을 구매한 회원수를 집계하는 SQL문을 작성해주세요.
    결과는 , , 성별을 기준으로 오름차순 정렬해주세요.
    이때, 성별 정보가 없는 경우 결과에서 제외해주세요.

     

    SELECT extract(year from b.sales_date) as year, extract(month from b.sales_date) as month, a.gender as gender, count(distinct b.user_id) as users
    from user_info a, online_sale b
    where a.user_id = b.user_id and a.gender is not null
    group by extract(year from b.sales_date), extract(month from b.sales_date), a.gender
    order by 1, 2, 3

     

    반응형

     

     

    3. 저자 별 카테고리 별 매출액 집계하기

    2022 1월의 도서 판매 데이터를 기준으로 저자 , 카테고리 매출액(TOTAL_SALES = 판매량 * 판매가) 구하여, 저자 ID(AUTHOR_ID), 저자명(AUTHOR_NAME), 카테고리(CATEGORY), 매출액(SALES) 리스트를 출력하는 SQL문을 작성해주세요.
    결과는 저자 ID 오름차순으로, 저자 ID 같다면 카테고리를 내림차순 정렬해주세요.

     

    SELECT a.author_id, a.author_name, b.category, sum(bs.sales * b.price) as total_sales
    from book b, author a, book_sales bs
    where b.author_id = a.author_id and b.book_id = bs.book_id 
        and to_char(bs.sales_date, 'yyyy-mm') = '2022-01'
    group by a.author_id, a.author_name, b.category
    order by 1, 3 desc

     

     

     

     

    4. 우유와 요거트가 담긴 장바구니

    데이터 분석 팀에서는 우유(Milk) 요거트(Yogurt) 동시에 구입한 장바구니가 있는지 알아보려 합니다.
    우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요.
    이때 결과는 장바구니의 아이디 순으로 나와야 합니다.

     

    SELECT cart_id
    from cart_products
    where name in ('Yogurt', 'Milk')
    group by cart_id
    having count(distinct name) >= 2
    order by 1

     

     

     

     

    5. 주문량이 많은 아이스크림들 조회하기

    7 아이스크림 주문량과 상반기의 아이스크림 주문량을 더한 값이 순서대로 상위 3개의 맛을 조회하는 SQL 문을 작성해주세요.

     

    select flavor
    from(
        select total + total_order, a.flavor
        from 
            (SELECT j.flavor, sum(j.total_order) as total
            from first_half fh, july j
            where fh.shipment_id(+) = j.shipment_id
            group by j.flavor) a, first_half b
        where a.flavor = b.flavor
        order by 1 desc)
    where rownum <= 3

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.