5월 식품들의 총매출 조회하

다음은 식품의 정보를 담은 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 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요.

5월 식품들의 총매출 조회하기Lv.4

131117

https://school.programmers.co.kr/learn/courses/30/lessons/131117

해설

FOOD_PRODUCT 테이블과 FOOD_ORDER 테이블을 사용하여 특정 기간(2022년 5월) 동안의 각 식품 제품의 총 판매액을 계산하고, 결과를 내림차순으로 정렬하여 반환하는 목적을 가지고 있습니다.

  • Name
    SELECT
    Type
    Description
    • SELECT FOOD_PRODUCT.PRODUCT_ID, FOOD_PRODUCT.PRODUCT_NAME, SUM(FOOD_PRODUCT.PRICE * FOOD_ORDER.AMOUNT) AS TOTAL_SALES
    • 이 부분은 각 제품의 PRODUCT_ID, PRODUCT_NAME과 각 제품의 총 판매액(TOTAL_SALES)을 선택하여 출력합니다.
    • 총 판매액은 FOOD_PRODUCT 테이블의 PRICE와 FOOD_ORDER 테이블의 AMOUNT를 곱한 후, 각 제품별로 합산하여 계산합니다.
  • Name
    LEFT JOIN
    Type
    Description
    • LEFT JOIN FOOD_ORDER ON FOOD_PRODUCT.PRODUCT_ID = FOOD_ORDER.PRODUCT_ID
    • FOOD_PRODUCT 테이블과 FOOD_ORDER 테이블을 PRODUCT_ID를 기준으로 LEFT JOIN합니다. 이는 FOOD_PRODUCT 테이블의 모든 제품을 포함하며, FOOD_ORDER 테이블에 해당 제품이 존재하면 해당 주문 정보를 결합합니다.
  • Name
    WHERE
    Type
    Description
    • WHERE FOOD_ORDER.PRODUCE_DATE LIKE '2022-05%'
    • 이 조건은 FOOD_ORDER 테이블에서 PRODUCE_DATE가 2022년 5월인 주문만을 필터링합니다.
  • Name
    GROUP BY
    Type
    Description
    • GROUP BY FOOD_PRODUCT.PRODUCT_NAME
    • 결과를 PRODUCT_NAME별로 그룹화하여, 각 제품 이름별로 총 판매액을 계산합니다.
  • Name
    ORDER BY
    Type
    Description
    • ORDER BY TOTAL_SALES DESC, FOOD_PRODUCT.PRODUCT_ID ASC
    • 최종 결과를 TOTAL_SALES에 따라 내림차순으로 정렬하고, TOTAL_SALES가 동일할 경우 PRODUCT_ID에 따라 오름차순으로 정렬합니다.

5월 식품들의 총매출 조회하기

SELECT
    FOOD_PRODUCT.PRODUCT_ID, FOOD_PRODUCT.PRODUCT_NAME, SUM(FOOD_PRODUCT.PRICE * FOOD_ORDER.AMOUNT) AS TOTAL_SALES
FROM
    FOOD_PRODUCT
LEFT JOIN
    FOOD_ORDER
ON
    FOOD_PRODUCT.PRODUCT_ID = FOOD_ORDER.PRODUCT_ID
WHERE
    FOOD_ORDER.PRODUCE_DATE LIKE '2022-05%'
GROUP BY
    FOOD_PRODUCT.PRODUCT_NAME
ORDER BY
    TOTAL_SALES DESC, FOOD_PRODUCT.PRODUCT_ID ASC;