데이터분석/TIL

240729 TIL

Freely_ 2024. 7. 29. 20:35
728x90
반응형
 

프로그래머스

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

programmers.co.kr

BOOK 테이블
AUTHOR 테이블
BOOK_SALES 테이블

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

 

  • 풀이
SELECT x.author_id, y.author_name, x.category, x.total_sales
FROM (SELECT a.author_id, a.category, sum(a.price*b.sales) total_sales
      FROM book a
      JOIN book_sales b
      ON a.book_id=b.book_id
      WHERE year(b.sales_date)=2022 and month(b.sales_date)=1
      GROUP BY a.author_id, a.category) x
JOIN author y
ON x.author_id=y.author_id
ORDER BY 1, 3 desc

 

프로그래머스

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

programmers.co.kr

CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블

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

 

  • 풀이
SELECT MONTH(START_DATE) MONTH, CAR_ID, COUNT(*) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' AND '2022-10'
    AND CAR_ID IN (SELECT CAR_ID
                    FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
                    WHERE DATE_FORMAT(START_DATE, '%Y-%m') BETWEEN '2022-08' AND '2022-10'
                    GROUP BY CAR_ID
                    HAVING COUNT(CAR_ID)>=5)
GROUP BY CAR_ID, MONTH(START_DATE)
HAVING RECORDS > 0
ORDER BY 1, 2 DESC

  • 문제 - 그룹별 조건에 맞는 식당 목록 출력하기

MEMBER_PROFILE 테이블
REST_REVIEW 테이블

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

 

  • 풀이
SELECT a.member_name, b.review_text, date_format(b.review_date, '%Y-%m-%d') review_date
FROM member_profile a
JOIN rest_review b
ON a.member_id=b.member_id
WHERE a.member_id = (SELECT member_id
                     FROM rest_review
                     GROUP BY member_id
                     ORDER BY count(*) desc limit 1)
ORDER BY 3 , 2

 

프로그래머스

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

programmers.co.kr

ONLINE_SALE 테이블
OFFLINE_SALE 테이블

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

 

  • 풀이
SELECT date_format(sales_date, '%Y-%m-%d') sales_date,
        product_id,
        user_id,
        sales_amount
FROM online_sale
WHERE month(sales_date)=3
UNION
SELECT date_format(sales_date,'%Y-%m-%d') sales_date,
        product_id,
        null as user_id,
        sales_amount
FROM offline_sale
WHERE month(sales_date)=3
ORDER BY 1, 2, 3

 

728x90
반응형