loading

새소식

CodingTest/Programmers

[프로그래머스/Lv4️⃣] 5월 식품들의 총매출 조회하기 (문제 해설 및 풀이)

  • -
728x90
반응형

 

 

 

 

 

 

 

다음은 식품의 정보를 담은 FOOD_PRODUCT 테이블과 식품의 주문 정보를 담은 FOOD_ORDER 테이블입니다. FOOD_PRODUCT 테이블은 다음과 같으며 PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE는 식품 ID, 식품 이름, 식품코드, 식품분류, 식품 가격을 의미합니다.

FOOD_ORDER 테이블은 다음과 같으며 ORDER_ID, PRODUCT_ID, AMOUNT, PRODUCE_DATE, IN_DATE, OUT_DATE, FACTORY_ID, WAREHOUSE_ID는 각각 주문 ID, 제품 ID, 주문량, 생산일자, 입고일자, 출고일자, 공장 ID, 창고 ID를 의미합니다.

 

FOOD_PRODUCT

 

FOOD_ORDER

 

 

 

 

 

FOOD_PRODUCT



FOOD_ORDER

 

 

FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요.

 

 

 

 

1. MySQL

 

SELECT P.PRODUCT_ID, P.PRODUCT_NAME, SUM(P.PRICE*O.AMOUNT) AS TOTAL_SALES
FROM FOOD_PRODUCT P, FOOD_ORDER O
WHERE DATE_FORMAT(O.PRODUCE_DATE, '%Y-%m') = '2022-05'
AND P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_ID
ORDER BY TOTAL_SALES DESC, P.PRODUCT_ID;

 

⭐ DATE_FORMAT() 사용

 

 

 

 

 

2. Oracle

 

SELECT P.PRODUCT_ID, P.PRODUCT_NAME, SUM(P.PRICE*O.AMOUNT) AS TOTAL_SALES
FROM FOOD_PRODUCT P, FOOD_ORDER O
WHERE TO_CHAR(O.PRODUCE_DATE, 'yyyy-mm') = '2022-05'
AND P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_ID, P.PRODUCT_NAME
ORDER BY TOTAL_SALES DESC, P.PRODUCT_ID;

 

⭐ TO_CHAR() 사용

 결과 값에 동일한 PRODUCT_ID, PRODUCT_NAME 이 존재하기 때문에 GROUP BY 시 ID, NAME 을 사용해야 한다.

 

 

 

 

 

 

 

 

 



 

 

 

 

 

 


 

 

 

728x90
반응형

📝 포스팅 주소를 복사했습니다 📝

이 글이 도움이 되었다면 공감 부탁드립니다👍