프로그래머스:sql 고득점 Kit

상품 별 오프라인 매출 구하기

rabbit-jun 2026. 2. 26. 19:00

링크:https://school.programmers.co.kr/learn/courses/30/lessons/131533

틀린 답

SELECT PRODUCT_CODE, (SUM(SALES_AMOUNT)* P.PRICE) AS 'SALES' 
FROM PRODUCT AS P JOIN OFFLINE_SALE AS O ON P.PRODUCT_ID = O.PRODUCT_ID 
GROUP BY O.PRODUCT_ID ORDER BY SALES DESC

 

Q&A

질문
내 생각엔 SUM()이 PRODUCT_ID마다 제대로 안된 것 같아 맞나?

 

답변
작성하신 쿼리에서 GROUP BY O.PRODUCT_ID를 명시하셨기 때문에, SUM() 함수 자체는 각 상품(PRODUCT_ID)마다 그룹화되어 정상적으로 계산되고 있습니다.

 

하지만 코드가 문제의 요구사항을 완전히 충족하려면 다음 두 가지 부분을 수정해야 합니다.

 

GROUP BY와 SELECT 컬럼 일치: 표준 SQL에서는 SELECT 절에 조회하려는 일반 컬럼이 GROUP BY 절에도 명시되어야 에러가 발생하지 않습니다. 현재 SELECT 절에서 PRODUCT_CODE를 조회하고 있으므로, GROUP BY 절에서도 P.PRODUCT_CODE를 기준으로 묶어주는 것이 좋습니다.

 

다중 정렬 조건 누락: 문제의 지문에서 정렬 기준을 확인해 보면 "매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요."라는 조건이 있습니다.

 


답

SELECT PRODUCT_CODE, (SUM(SALES_AMOUNT)* P.PRICE) AS 'SALES' 
FROM PRODUCT AS P JOIN OFFLINE_SALE AS O ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY O.PRODUCT_ID,PRODUCT_CODE ORDER BY SALES DESC, PRODUCT_CODE ASC

 

 

 

 

 

 


 

반응형