https://school.programmers.co.kr/learn/courses/30/lessons/131117
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✔️ 풀이
1. SELECT
- 문제 조건에 맞게 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회한다.
- 이때, 총매출의 경우 FOOD_ORDER 테이블의 AMOUNT과 FOOD_PRODUCT 테이블의 PRICE 테이블을 곱한 합을 출력해야 하므로, SUM(FO.AMOUNT * FP.PRICE)와 같이 설정하고, 출력할 컬럼 이름은 TOTAL_SALES로 설정한다.
2. FROM
- INNER JOIN을 수행하므로, FOOD_ORDER 나 FOOD_PRODUCT 나 상관없이 가능하다. (JOIN 하는 대상만 다르게 바꿔주면 된다!)
3. INNER JOIN
- TOTAL_SALES값을 구하기 위해 FOOD_ORDER 테이블의 AMOUNT 컬럼 값과 FOOD_PRODUCT 테이블의 PRICE 컬럼 값이 필요하므로, PRODUCT_ID값이 동일한 것 끼리 테이블을 INNER JOIN 한다.
4. WHERE
- 문제 조건에서 생산일자가 2022년 5월인 식품이라고 했으므로, FOOD_ORDER 테이블의 PRODUCE_DATE값에서 년도가 2022년이고, 5월달인 조건을 AND로 묶어 설정한다.
5. GROUP BY
- 상품 ID와 상품명에 따른 TOTAL_SALES값을 조회해야 하므로, PRODUCT_ID와 PRODUCT_NAME로 그룹화를 진행한다.
6. ORDER BY
- 문제 조건에 맞게 총매출을 기준으로 내림차순(DESC) 정렬 조건을 추가하고, 총매출이 같은 경우에는 식품 ID 기준으로 오름차순(ASC) 정렬하도록 한다.
✔️ 코드
SELECT FP.PRODUCT_ID,
FP.PRODUCT_NAME,
SUM(FO.AMOUNT * FP.PRICE) AS TOTAL_SALES
FROM FOOD_PRODUCT AS FP
INNER JOIN FOOD_ORDER AS FO ON FO.PRODUCT_ID = FP.PRODUCT_ID
WHERE YEAR(FO.PRODUCE_DATE) = 2022 AND MONTH(FO.PRODUCE_DATE) = 5
GROUP BY FP.PRODUCT_ID, FP.PRODUCT_NAME
ORDER BY TOTAL_SALES DESC, FP.PRODUCT_ID ASC;
'✔️ Algorithm > Programmars' 카테고리의 다른 글
[프로그래머스/MySQL] 상품을 구매한 회원 비율 구하기 (0) | 2023.09.03 |
---|---|
[프로그래머스/MySQL] 상품 별 오프라인 매출 구하기 (0) | 2023.09.02 |
[프로그래머스/MySQL] 보호소에서 중성화한 동물 (0) | 2023.09.02 |
[프로그래머스/MySQL] 오랜 기간 보호한 동물(1) (0) | 2023.09.02 |
[프로그래머스/MySQL] 있었는데요 없었습니다 (0) | 2023.09.02 |
댓글