PRODUCT 테이블과 OFFLINE_SALE 테이블에서 상품코드 별 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.
📌 상품코드 별 매출액(판매가 * 판매량) 합계를 구하는 과정에서 계산 실수 발생
# 문제된 쿼리
SELECT p.product_code
, SUM(o.sales_amount*p.price) AS total_amount
# 문제에 매출액(판매가 * 판매량)으로 명시되어 있어서
# 각 (판매량 * 가격)을 계산한 후에 합계(SUM)을 구함
# 에러는 발생하지 않고 결과값은 나왔지만, 누락된 값 발생
한참을 고민하고 문제도 다시 읽어 본 후, 문제점 발견‼️
# 개선한 쿼리
SELECT p.product_code
, SUM(o.sales_amount)*p.price AS total_amount
# 매출액을 구하려면, 상품코드 별 총 판매량 합계(SUM)을 구한 후
# 가격(price)와 곱한 값이 총 매출액이 된다.
따라서, 최종 완성된 쿼리문은 아래와 같이 작성할 수 있다.
SELECT p.product_code
, SUM(o.sales_amount)*p.price AS total_amount
FROM product AS p
INNER JOIN offline_sale AS o
ON p.product_id=o.product_id
GROUP BY p.product_code
ORDER BY SUM(o.sales_amount)*p.price DESC
, p.product_code ASC
;
총 매출액과 같은 계산 과정이 주어졌을 때, 먼저 계산되어야 할 값(우선순위)을 생각하면서 풀어야 겠다는 생각을 하였다.
아까 문제를 풀 때에는 문제인 것 같았으나, 다시 확인해보니 ⚡️⚡️⚡️어쩌나 저쩌나 결과가 똑같이 나오는 사실을 발견⚡️⚡️⚡️ 아까는 도깨비가 머릿속에 있던게 분명해...