테이블 index
문제
PRODUCT
테이블과 OFFLINE_SALE
테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.예시

풀이
상품과 판매기록은 서로 다른 테이블이기에 가장 먼저
JOIN
을 해주었다SELECT *
from OFFLINE_SALE a
inner join PRODUCT b on a.product_id = b.PRODUCT_ID
PRODUCT_ID
가 상품의 ID이기 때문에 group by
하여서 판매된 상품의 값을 구했다.SELECT *, sum(b.price) SALES
from OFFLINE_SALE a
inner join PRODUCT b on a.product_id = b.PRODUCT_ID
group by a.PRODUCT_ID
이후 필요한
column
과 order by
를 이용하여 정렬SELECT b.PRODUCT_CODE, sum(b.price) SALES
from OFFLINE_SALE a
inner join PRODUCT b on a.product_id = b.PRODUCT_ID
group by a.PRODUCT_ID
order by sales desc, PRODUCT_CODE
하지만 오답. 이유는 위에 코드도 합산된 값이 나오지만, 문제에서 원하는 방식은 (판매가 * 판매량) 이였기 때문이다. 그래서
sum
함수에서 2개의 column
을 곱해주었다.SELECT b.PRODUCT_CODE, sum(b.price * SALES_AMOUNT) SALES
from OFFLINE_SALE a
inner join PRODUCT b on a.product_id = b.PRODUCT_ID
group by a.PRODUCT_ID
order by sales desc, PRODUCT_CODE
Share article