울음참고 개발공부
article thumbnail
728x90

 

https://school.programmers.co.kr/learn/courses/30/lessons/131537

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 


 

 

[ 정답 - UNION

 

SELECT DATE_FORMAT(SALES_DATE,"%Y-%m-%d") SALES_DATE
     , PRODUCT_ID
     , USER_ID
     , SALES_AMOUNT
FROM   ONLINE_SALE
WHERE  SALES_DATE LIKE '2022-03%'

UNION 

SELECT DATE_FORMAT(SALES_DATE,"%Y-%m-%d") SALES_DATE
     , PRODUCT_ID
     , NULL AS USER_ID
     , SALES_AMOUNT
FROM   OFFLINE_SALE 
WHERE  SALES_DATE LIKE '2022-03%'
    
ORDER BY SALES_DATE 
       , PRODUCT_ID 
       , USER_ID

 

 

 

UNION / UNION ALL

UNION - 중복제외 조회
UNION ALL - 중복 포함 조회 

 

 


 

 

[ 오답처리  - LEFT OUTER JOIN ] 

SELECT   DATE_FORMAT(ONS.SALES_DATE, '%Y-%m-%d') AS SALES_DATE
       , ONS.PRODUCT_ID
       , ONS.USER_ID
       , ONS.SALES_AMOUNT
FROM     ONLINE_SALE ONS  
LEFT OUTER JOIN OFFLINE_SALE OFFS
ON       ONS.PRODUCT_ID = OFFS.PRODUCT_ID
WHERE    ONS.SALES_DATE LIKE '2022-03%'
GROUP BY PRODUCT_ID
ORDER BY ONS.SALES_DATE
        ,ONS.PRODUCT_ID 
        ,ONS.USER_ID

 

 

 

 


 

 

# UNION 을 사용하는 경우와 JOIN 을 사용하는 경우 

 

둘 다 조회되는 결과는 같다. 

하지만 LEFT JOIN 을 사용하면 오답처리가 된다. 

 

해당 문제가 테이블 '통합' 하는것에 개념을 두었기에 오답처리가 되는 것일까..?! 

 

 

 

 

 

 

 

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!