반응형
프로그래머스에 여러 문법들을 활용해서 SQL 쿼리문을 짜볼 수 있도록 다양한 문제들을 레벨 별로 제공하고 있습니다.
Lv2 '상품 별 오프라인 매출 구하기' 문제를 풀어보았습니다.
프로그래머스 문제 링크 참고 바라며, 문제는 간략히 설명합니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
사용할 테이블 정보
어느 의류 쇼핑몰에서 판매중인 상품들의 상품 정보를 담은 PRODUCT
테이블과
오프라인 상품 판매 정보를 담은 OFFLINE_SALE
테이블이 있으며,
두 테이블 모두 product_id
칼럼을 가지고 있습니다.
생각의 과정
- product 테이블과 offline_sale 테이블 각각의 칼럼을 조합하여 결과를 보여주어야 한다.
JOIN
을 수행해야겠다.product_id
를 공통으로 가지고 있으니 이를 활용한다.
- 매출액은
product.price
와offline_sale.sales_amount
의 곱이다. - 상품코드 별 매출액의 합을 구해야한다.
- 상품코드로
GROUP BY
하여SUM()
을 구해야겠다.
- 상품코드로
- 매출액으로 내림차순하고, 동일한 매출액이면 상품코드로 오름차순한다.
ORDER BY
매출액 desc, 상품코드 asc
- (참고) 상품ID는 OFFLIE_SALE 테이블에 중복으로 존재할 수 있으나, 상품ID와 판매일까지 고려한 데이터는 중복 존재하지 않는다.
- 상품이 오프라인 판매 테이블에 존재하지 않을 수 있고, 이럴 경우 어떻게 할지 고려해야 할 것 같다.
- (해당 내용에 대한 설명은 따로 없어 우선 고려하지 않고 문제를 제출하니 테스트 케이스에 이런 경우는 없는지 통과되었다.)
SQL 쿼리 작성 (MySQL)
SELECT product.product_code, SUM(product.price * offline_sale.sales_amount) AS sales
FROM product INNER JOIN offline_sale
ON product.product_id = offline_sale.product_id
GROUP BY product.product_code
ORDER BY sales desc, product.product_code asc;
필요한 지식
INNER JOIN, GROUP BY, ORDER BY, 연산함수 SUM
반응형
'Algorithm & Data Structure > 문제 풀이' 카테고리의 다른 글
[SQL, 프로그래머스] 주문량이 많은 아이스크림들 조회하기 (0) | 2024.06.16 |
---|---|
[SQL, 프로그래머스] 조건에 맞는 도서와 저자 리스트 출력하기 (1) | 2024.06.09 |
[HackerRank] SQL 문제 (0) | 2022.06.26 |
[JAVA] baekjoon 2447 별 찍기-10 (0) | 2022.06.15 |
[JAVA] baekjoon 1891 사분면 (0) | 2022.06.13 |