결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요.
2) 예시
예를 들어 PRODUCT 테이블이 다음과 같고
PRODUCT_ID
PRODUCT_CODE
PRICE
1
A1000011
15000
2
A1000045
8000
3
C3000002
42000
OFFLINE_SALE 테이블이 다음과 같다면
OFFLINE_SALE_ID
PRODUCT_ID
SALES_AMOUNT
SALES_DATE
1
1
2
2022-02-21
2
1
2
2022-03-02
3
3
3
2022-05-01
4
2
1
2022-05-24
5
1
2
2022-07-14
6
2
1
2022-09-22
각 상품 별 총 판매량과 판매가는 다음과 같습니다.
PRODUCT_CODE 가 A1000011인 상품은 총 판매량이 6개, 판매가가 15,000원 PRODUCT_CODE 가 A1000045인 상품은 총 판매량이 2개, 판매가가 8,000원 PRODUCT_CODE 가 C3000002인 상품은 총 판매량이 3개, 판매가가 42,000원 그러므로 각 상품 별 매출액을 계산하고 정렬하면 결과가 다음과 같이 나와야 합니다.
PRODUCT 테이블의 가격과 OFFLINE_SALE의 판매량을 곱하여 해당 상품의 판매금액을 구하고,
SUM 해주게 되면 그룹별로 총판매금액을 구할 수 있게 됩니다.
SELECT P.PRODUCT_CODE, SUM(P.PRICE * O.SALES_AMOUNT) AS SALES
PROUDCT_CODE 조회하고, 가격 * 판매량을 곱한 후 모두 더해 'SALES'라는 열로 만들어줍니다.
FROM PRODUCT AS P
PRODUCT 테이블은 'P'라고 명칭합니다.
INNER JOIN OFFLINE_SALE AS O ON P.PRODUCT_ID = O.PRODUCT_ID
두 테이블은 PRODUCT_ID로 연결이 가능하기에, INNER JOIN해서 겹치는 영역을 찾아줍니다.
OFFLINE_SALE 테이블은 'O'라고 명칭합니다.
GROUP BY P.PRODUCT_CODE
상품코드로 그룹화해줍니다.
ORDER BY SALES DESC, P.PRODUCT_CODE ASC;
SALES 내림차순으로 정렬하고, 총판매금액인 SALES 값이 같다면 상품코드 오름차순으로 정렬합니다.
4) 코드
SELECT P.PRODUCT_CODE, SUM(P.PRICE * O.SALES_AMOUNT) AS SALES
FROM PRODUCT AS P
INNER JOIN OFFLINE_SALE AS O ON P.PRODUCT_ID = O.PRODUCT_ID
GROUP BY P.PRODUCT_CODE
ORDER BY SALES DESC, P.PRODUCT_CODE ASC;