[프로그래머스 / SQL] 5월 식품들의 총매출 조회하기

Dreamer·2025년 5월 28일

문제

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

나의 풀이

  1. 첫번째 풀이 : 정답
SELECT 
    p.PRODUCT_ID,
    p.PRODUCT_NAME,
    SUM(o.AMOUNT * p.PRICE) AS TOTAL_SALES
FROM FOOD_PRODUCT p
JOIN FOOD_ORDER o ON o.PRODUCT_ID = p.PRODUCT_ID
WHERE DATE_FORMAT(o.PRODUCE_DATE, '%Y-%m') = '2022-05'
GROUP BY o.PRODUCT_ID
ORDER BY TOTAL_SALES DESC, p.PRODUCT_ID ASC
  1. 정확한 쿼리문
    : PRODUCT_NAME 컬럼도 필요하다면 GROUP BY에 추가해주기

    GROUP BY에는 SELECT절의 모든 non-aggregate 컬럼 추가
    항상 표준 SQL로 작성하는 것이 좋음 (다른 DB 호환성, 명확성)

SELECT 
    p.PRODUCT_ID,
    p.PRODUCT_NAME,
    SUM(o.AMOUNT * p.PRICE) AS TOTAL_SALES
FROM FOOD_PRODUCT p
JOIN FOOD_ORDER o ON o.PRODUCT_ID = p.PRODUCT_ID
WHERE DATE_FORMAT(o.PRODUCE_DATE, '%Y-%m') = '2022-05'
GROUP BY p.PRODUCT_ID, p.PRODUCT_NAME  -- ❗ 두 컬럼 모두 포함
ORDER BY TOTAL_SALES DESC, p.PRODUCT_ID ASC
profile
Moving forward based on records

0개의 댓글