안녕하세요 영상속에서 SUB QUERY를 사용한 해결방법이 아닌 JOIN을 사용하여 문제를 해결하는 방법을 올려보려합니다.
영상 속 16분 18초부터의 문제부터 시작됩니다.
/* 1. FROM절 서브쿼리를 활용하여, SALES 테이블의 PRODUCT_CODE별 판매수량을 구하시오.*/
/* FROM절 서브쿼리 / SUM 함수 활용 */
1. 기존의 SUB QUERY를 사용한 해결방법
SELECT * FROM ( SELECT PRODUCT_CODE ,SUM(SALES_QTY) AS 판매수량 FROM SALES GROUP BY PRODUCT_CODE )AS A;
2. JOIN을 사용한 해결방법 ★★★★★
SELECT A.PRODUCT_CODE,
SUM(SALES_QTY) AS 판매수량
FROM SALES AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE
GROUP
BY A.PRODUCT_CODE;/* 2. (1) 명령어를 활용하여, PRODUCT 테이블과 LEFT JOIN 하시오.*/
/* LEFT JOIN 활용 */
1. 기존의 SUB QUERY를 사용한 해결방법
SELECT *
FROM (
SELECT PRODUCT_CODE
,SUM(SALES_QTY) AS 판매수량
FROM SALES
GROUP
BY PRODUCT_CODE
)AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE;2. JOIN을 사용한 해결방법 ★★★★★
CREATE TEMPORARY TABLE PRODUCT_TOTAL_SALES_QTY
SELECT B.PRODUCT_CODE,
SUM(SALES_QTY) AS 판매수량
FROM SALES AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE
GROUP
BY B.PRODUCT_CODE;
SELECT *
FROM PRODUCT_TOTAL_SALES_QTY AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE;새로운 임시 테이블을 생성한 후 JOIN을 사용하여 해결하였습니다.
/* 3. (2) 명령어를 활용하여, 카테고리 및 브랜드별 판매수량을 구하시오.*/
/* GROUP BY절 / SUM 함수 활용*/
1. 기존의 SUB QUERY를 사용한 해결방법
SELECT CATEGORY
,BRAND
,SUM(판매수량) AS 판매수량
FROM (
SELECT PRODUCT_CODE
,SUM(SALES_QTY) AS 판매수량
FROM SALES
GROUP
BY PRODUCT_CODE
)AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE
GROUP
BY CATEGORY
,BRAND;2. JOIN을 사용한 해결방법 ★★★★★
SELECT CATEGORY,
BRAND,
SUM(판매수량) AS 판매수량
FROM PRODUCT_TOTAL_SALES_QTY AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE
GROUP
BY CATEGORY,
BRAND;코드가 보다 직관적인 것을 볼 수 있습니다.
++++ 수정 ★★★★★
임시테이블을 미리 생성하여 1번과 2번문제를 보다 간결하게 풀 수 있었습니다.
// 새로운 임시 테이블 생성 (중복된 코드)
CREATE TEMPORARY TABLE PRODUCT_TOTAL_SALES_QTY
SELECT A.PRODUCT_CODE,
SUM(SALES_QTY) AS 판매수량
FROM SALES AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE
GROUP
BY A.PRODUCT_CODE;
/* 1. FROM절 서브쿼리를 활용하여, SALES 테이블의 PRODUCT_CODE별 판매수량을 구하시오.*/
SELECT *
FROM PRODUCT_TOTAL_SALES_QTY;
/* 2. (1) 명령어를 활용하여, PRODUCT 테이블과 LEFT JOIN 하시오.*/
SELECT *
FROM PRODUCT_TOTAL_SALES_QTY AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE;
/* 3. (2) 명령어를 활용하여, 카테고리 및 브랜드별 판매수량을 구하시오.*/
SELECT CATEGORY,
BRAND,
SUM(판매수량) AS 판매수량
FROM PRODUCT_TOTAL_SALES_QTY AS A
LEFT
JOIN PRODUCT AS B
ON A.PRODUCT_CODE = B.PRODUCT_CODE
GROUP
BY CATEGORY,
BRAND;
comment